BNB Price: $696.71 (-1.86%)
Gas: 1 GWei
 

Overview

Max Total Supply

100,000,000DRT

Holders

8,956

Market

Price

$0.00 @ 0.000000 BNB

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
BlockRazor: Payment
Balance
0.01 DRT

Value
$0.00
0x1266c6be60392a8ff346e8d5eccd3e69dd9c5f20
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x1f9D1f75...d105b4f24
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Token

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2023-04-27
*/

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

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


interface IERC20 {

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

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

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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


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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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


contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_,uint8 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

    function WETH() external pure returns (address);

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


}

interface IUniswapV2Router02 is IUniswapV2Router01 {

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

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

}

interface IUniswapV2Factory {

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

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

interface IUniswapV2Pair {

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

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

    function token0() external view returns (address);

    function token1() external view returns (address);

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

}

contract usdtReceiver {
    address public usdt;
    address public owner;
    constructor(address _u) {
        usdt = _u;
        owner = msg.sender;
        IERC20(usdt).approve(msg.sender,~uint256(0));
    }
}

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

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapPair;

    bool private swapping;

    uint256 public swapTokensAtAmount;

    uint256 public buyTokenRewardsFee;
    uint256 public sellTokenRewardsFee;

    uint256 public buyLiquidityFee;
    uint256 public sellLiquidityFee;

    uint256 public buyMarketingFee;
    uint256 public sellMarketingFee;

    uint256 public buyDeadFee;
    uint256 public sellDeadFee;

    uint256 public AmountLiquidityFee;
    uint256 public AmountTokenRewardsFee;
    uint256 public AmountMarketingFee;

    uint256 public addLiquidityFee;
    uint256 public removeLiquidityFee;


    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public usdtAddress;
    address public _marketingWalletAddress;
    address public rewardsAddress;
    uint256 public gasForProcessing;
    bool public swapAndLiquifyEnabled = true;
    uint256 currentIndex;
    uint256 public LPFeeRewardsTimes;
    uint256 public minLPFeeRewards;
    uint256 public first;
    uint256 public kill = 0;
    uint256 public airdropNumbs;
    usdtReceiver public _usdtReceiver;
    uint256 public processRewardWaitBlock = 20;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping(address => bool) public _isBlacklisted;
    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    bool public checkWalletLimit = true;
    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    // Whether to distribute dividends in local currency
    bool public currencyFlag;
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;


    mapping(address => bool) private _updated;
    address[] public shareholders;
    mapping(address => uint256) shareholderIndexes;


    event UpdateDividendTracker(address indexed newAddress, address indexed oldAddress);

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet);

    event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue);

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

    event SendDividends(
        uint256 tokensSwapped,
        uint256 amount
    );

    event ProcessedDividendTracker(
        uint256 iterations,
        uint256 claims,
        uint256 lastProcessedIndex,
        bool indexed automatic,
        uint256 gas,
        address indexed processor
    );

    constructor(
        string memory name_,
        string memory symbol_,
        uint256 totalSupply_,
        uint8 decimals_,
        address[4] memory addrs, // router,markting,usdtAddress,rewardsAddress
        uint256[4] memory buyFeeSetting_, // rewards,lp,market,dead
        uint256[4] memory sellFeeSetting_, // rewards,lp,market,dead
        bool flag,
        address service
    ) payable ERC20(name_, symbol_,decimals_)  {
        _marketingWalletAddress = addrs[1];
        usdtAddress = addrs[2];
        _usdtReceiver = new usdtReceiver(usdtAddress);
        currencyFlag = flag;
        if(currencyFlag){
          rewardsAddress = address(this);
        }else{
          rewardsAddress = addrs[3];
        }
        buyTokenRewardsFee = buyFeeSetting_[0];
        buyLiquidityFee = buyFeeSetting_[1];
        buyMarketingFee = buyFeeSetting_[2];
        buyDeadFee = buyFeeSetting_[3];

        sellTokenRewardsFee = sellFeeSetting_[0];
        sellLiquidityFee = sellFeeSetting_[1];
        sellMarketingFee = sellFeeSetting_[2];
        sellDeadFee = sellFeeSetting_[3];

        require(buyTokenRewardsFee.add(buyLiquidityFee).add(buyMarketingFee).add(buyDeadFee) <= 100, "Total buy fee is over 100%");
        require(sellTokenRewardsFee.add(sellLiquidityFee).add(sellMarketingFee).add(sellDeadFee) <= 100, "Total sell fee is over 100%");

        uint256 totalSupply = totalSupply_ * (10 ** decimals_);
        swapTokensAtAmount = totalSupply.mul(2).div(10**6); // 0.002%
        _maxTxAmount = totalSupply;
        _walletMax = totalSupply;
        if(currencyFlag){
          minLPFeeRewards = (10 ** decimals_); // min Lp Rewards Dividend
        }else{
          minLPFeeRewards = (10 ** IERC20(rewardsAddress).decimals()); // min Lp Rewards Dividend
        }


        // use by default 300,000 gas to process auto-claiming dividends
        gasForProcessing = 300000;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(addrs[0]);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), usdtAddress);
        uniswapV2Router = _uniswapV2Router;
        uniswapPair = _uniswapV2Pair;
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);


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

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadWallet] = true;
        isWalletLimitExempt[_marketingWalletAddress] = true;

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[deadWallet] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[_marketingWalletAddress] = true;

        _mint(owner(), totalSupply);
        payable(service).transfer(msg.value);
    }
    receive() external payable {}



    function updateUniswapV2Router(address newAddress) public onlyOwner {
        require(newAddress != address(uniswapV2Router), "The router already has that address");
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
        .createPair(address(this), uniswapV2Router.WETH());
        uniswapPair = _uniswapV2Pair;
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);
        isWalletLimitExempt[address(uniswapPair)] = true;
    }
    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        if (_isExcludedFromFees[account] != excluded) {
            _isExcludedFromFees[account] = excluded;
            emit ExcludeFromFees(account, excluded);
        }
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }
    function multipleBotlistAddress(address[] calldata accounts, bool excluded) public onlyOwner {
            for (uint256 i = 0; i < accounts.length; i++) {
                _isBlacklisted[accounts[i]] = excluded;
            }
        }

    function setMarketingWallet(address payable wallet) external onlyOwner{
        _marketingWalletAddress = wallet;
        _isExcludedFromFees[_marketingWalletAddress] = true;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapPair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;
        emit SetAutomatedMarketMakerPair(pair, value);
    }


    function updateGasForProcessing(uint256 newValue) public onlyOwner {
        require(newValue != gasForProcessing, "Cannot update gasForProcessing to same value");
        emit GasForProcessingUpdated(newValue, gasForProcessing);
        gasForProcessing = newValue;
    }


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

    function swapManual() public onlyOwner {
        uint256 contractTokenBalance = balanceOf(address(this));
        require(contractTokenBalance > 0, "token balance zero");
        swapping = true;
        if (AmountMarketingFee > 0) swapAndSendMarketing(AmountMarketingFee);
        if(AmountLiquidityFee > 0) swapAndLiquify(AmountLiquidityFee);
        if (AmountTokenRewardsFee > 0) swapAndSendDividends(AmountTokenRewardsFee);
        swapping = false;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }


    function setSwapTokensAtAmount(uint256 amount) public onlyOwner {
        swapTokensAtAmount = amount;
    }

    function setRewardsAddr(address _addr) public onlyOwner {
        if(_addr == address(this)){
            currencyFlag = true;
        }else{
            currencyFlag = false;
        }
        rewardsAddress = _addr;
    }

    function setBuyTaxes(uint256 liquidity, uint256 rewardsFee, uint256 marketingFee, uint256 deadFee) external onlyOwner {
        require(rewardsFee.add(liquidity).add(marketingFee).add(deadFee) <= 100, "Total buy fee is over 100%");
        buyTokenRewardsFee = rewardsFee;
        buyLiquidityFee = liquidity;
        buyMarketingFee = marketingFee;
        buyDeadFee = deadFee;

    }

    function setSelTaxes(uint256 liquidity, uint256 rewardsFee, uint256 marketingFee, uint256 deadFee) external onlyOwner {
        require(rewardsFee.add(liquidity).add(marketingFee).add(deadFee) <= 100, "Total sel fee is over 100%");
        sellTokenRewardsFee = rewardsFee;
        sellLiquidityFee = liquidity;
        sellMarketingFee = marketingFee;
        sellDeadFee = deadFee;
    }
    function setAirdropNumbs(uint256 newValue) public onlyOwner {
        require(newValue <= 3, "newValue must <= 3");
        airdropNumbs = newValue;
    }

    function setKing(uint256 newValue) public onlyOwner {
        require(newValue <= 100, "newValue must <= 100");
        kill = newValue;
    }

    function setAddLiquidityFee(uint256 fee) external onlyOwner {
        require(fee <= 25, "Total sel fee is over 25%");
        addLiquidityFee = fee;
    }

    function setRemoveLiquidityFee(uint256 fee) external onlyOwner {
        require(fee <= 25, "Total sel fee is over 25%");
        removeLiquidityFee = fee;
    }

    function setRewardsInfo(uint256 minLpRewards,uint256 waitBlock) public onlyOwner {
        minLPFeeRewards = minLpRewards;
        processRewardWaitBlock = waitBlock;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }
    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }


    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "Blacklisted address");
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if(automatedMarketMakerPairs[to] && balanceOf(address(uniswapPair)) == 0){
            first = block.number;
        }
        if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
            if(automatedMarketMakerPairs[from] && block.number < first + kill){
                return super._transfer(from, _marketingWalletAddress, amount);
            }
        }

        if(!isTxLimitExempt[from] && !isTxLimitExempt[to]) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            from != owner() &&
            to != owner() &&
            swapAndLiquifyEnabled &&
            !_isAddLiquidity()
        ) {
            swapping = true;
            if (AmountMarketingFee > 0) swapAndSendMarketing(AmountMarketingFee);
            if(AmountLiquidityFee > 0) swapAndLiquify(AmountLiquidityFee);
            if (AmountTokenRewardsFee > 0) swapAndSendDividends(AmountTokenRewardsFee);
            swapping = false;
        }


        bool takeFee = !swapping;

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


        if(takeFee) {
            uint256 fees;
            uint256 LFee; // Liquidity
            uint256 RFee; // Rewards
            uint256 MFee; // Marketing
            uint256 DFee; // Dead

            bool isRemove;
            bool isAdd;
            if (automatedMarketMakerPairs[to]) {
                isAdd = _isAddLiquidity();
            } else if (automatedMarketMakerPairs[from]) {
                isRemove = _isRemoveLiquidity();
            }

            if(isAdd){
                RFee = amount.mul(addLiquidityFee).div(100);
                AmountTokenRewardsFee += RFee;
                fees = RFee;
            }else if(isRemove){
                RFee = amount.mul(removeLiquidityFee).div(100);
                AmountTokenRewardsFee += RFee;
                fees = RFee;
            }else if(automatedMarketMakerPairs[from]){
                LFee = amount.mul(buyLiquidityFee).div(100);
                AmountLiquidityFee += LFee;
                RFee = amount.mul(buyTokenRewardsFee).div(100);
                AmountTokenRewardsFee += RFee;
                MFee = amount.mul(buyMarketingFee).div(100);
                AmountMarketingFee += MFee;
                DFee = amount.mul(buyDeadFee).div(100);
                fees = LFee.add(RFee).add(MFee).add(DFee);
            }else if(automatedMarketMakerPairs[to]){
                LFee = amount.mul(sellLiquidityFee).div(100);
                AmountLiquidityFee += LFee;
                RFee = amount.mul(sellTokenRewardsFee).div(100);
                AmountTokenRewardsFee += RFee;
                MFee = amount.mul(sellMarketingFee).div(100);
                AmountMarketingFee += MFee;
                DFee = amount.mul(sellDeadFee).div(100);
                fees = LFee.add(RFee).add(MFee).add(DFee);
            }
            // airdrop
            if((automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]) && !isAdd && !isRemove){
                if (airdropNumbs > 0){
                    address ad;
                    for (uint256 i = 0; i < airdropNumbs; i++) {
                        ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                        super._transfer(from, ad, 1);
                    }
                    amount -= airdropNumbs * 1;
                }
            }

            amount = amount.sub(fees);
            if(DFee > 0) super._transfer(from, deadWallet, DFee);
            if(fees > 0) super._transfer(from, address(this), fees.sub(DFee));
        }

        if(checkWalletLimit && !isWalletLimitExempt[to]){
            require(balanceOf(to).add(amount) <= _walletMax);
        }

        super._transfer(from, to, amount);

        if (from != address(this) && automatedMarketMakerPairs[to]) {
            setShare(from);
        }

        if (!swapping &&
        from != address(this) &&
        block.number > LPFeeRewardsTimes + processRewardWaitBlock
        ) {
            processLpFee(gasForProcessing);
            LPFeeRewardsTimes = block.number;
        }
    }


    function _isAddLiquidity() internal view returns (bool isAdd){
        IUniswapV2Pair mainPair = IUniswapV2Pair(uniswapPair);
        (uint r0,uint256 r1,) = mainPair.getReserves();

        address tokenOther = usdtAddress;
        uint256 r;
        if (tokenOther < address(this)) {
            r = r0;
        } else {
            r = r1;
        }

        uint bal = IERC20(tokenOther).balanceOf(address(mainPair));
        isAdd = bal > r;
    }

    function _isRemoveLiquidity() internal view returns (bool isRemove) {
        IUniswapV2Pair mainPair = IUniswapV2Pair(uniswapPair);
        (uint r0, uint256 r1, ) = mainPair.getReserves();

        address tokenOther = usdtAddress;
        uint256 r;
        if (tokenOther < address(this)) {
            r = r0;
        } else {
            r = r1;
        }

        uint bal = IERC20(tokenOther).balanceOf(address(mainPair));
        isRemove = r >= bal;
    }


    function swapAndSendMarketing(uint256 tokens) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = usdtAddress;
        _approve(address(this), address(uniswapV2Router), tokens);
        if(usdtAddress == uniswapV2Router.WETH()){
            // make the swap
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokens,
                0, // accept any amount of ETH
                path,
                _marketingWalletAddress, // The contract
                block.timestamp
            );
        }else{
            // make the swap
            uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
                tokens,
                0, // accept any amount of USDT
                path,
                _marketingWalletAddress,
                block.timestamp
            );
        }
        AmountMarketingFee = AmountMarketingFee - tokens;
    }

    function swapAndLiquify(uint256 tokens) private {
       // split the contract balance into halves
        uint256 half = tokens.div(2);
        uint256 otherHalf = tokens.sub(half);

        uint256 initialBalance = IERC20(usdtAddress).balanceOf(address(this));

        // swap tokens for ETH
        swapTokensForUsdt(half,address(this)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = IERC20(usdtAddress).balanceOf(address(this)).sub(initialBalance);

        // add liquidity to uniswap
        addLiquidityUSDT(otherHalf, newBalance);
        AmountLiquidityFee = AmountLiquidityFee - tokens;
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function addLiquidityUSDT(uint256 tokenAmount, uint256 USDTAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        IERC20(usdtAddress).approve(address(uniswapV2Router),USDTAmount);
        // add the liquidity
        uniswapV2Router.addLiquidity(
            address(this),
            usdtAddress,
            tokenAmount,
            USDTAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _marketingWalletAddress,
            block.timestamp
        );
    }

    function swapTokensForUsdt(uint256 tokenAmount,address addr) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = usdtAddress;
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // make the swap
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of USDT
            path,
            address(_usdtReceiver),
            block.timestamp
        );
        uint256 amount = IERC20(usdtAddress).balanceOf(address(_usdtReceiver));
        IERC20(usdtAddress).transferFrom(address(_usdtReceiver),addr, amount);
    }

    function swapTokensForRewards(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth -> rewards
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = usdtAddress;
        path[2] = rewardsAddress;
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // make the swap
        try
            uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
                tokenAmount,
                0, // accept any amount of USDT
                path,
                address(this),
                block.timestamp
            )
        {}catch{}

    }

    function swapAndSendDividends(uint256 tokens) private {
        // Judging whether to distribute dividends in the local currency
        if(currencyFlag){
          AmountTokenRewardsFee = AmountTokenRewardsFee - tokens;
          return;
        }
        if(usdtAddress == rewardsAddress){
            swapTokensForUsdt(tokens,address(this));
        }else{
            swapTokensForRewards(tokens);
        }
        AmountTokenRewardsFee = AmountTokenRewardsFee - tokens;
    }

    function processLpFee(uint256 gas) private {
        uint256 total = IERC20(rewardsAddress).balanceOf(address(this));
        if(currencyFlag){
          total = total.sub(AmountLiquidityFee).sub(AmountTokenRewardsFee).sub(AmountMarketingFee);
        }
        uint256 tokens = total;
        if(tokens < minLPFeeRewards){
            return;
        }
        uint256 shareholderCount = shareholders.length;
        if (shareholderCount == 0) return;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }
            uint256 amount = total.mul(IERC20(uniswapPair).balanceOf(shareholders[currentIndex])).div(IERC20(uniswapPair).totalSupply());
            if (tokens < amount) return;
            if(amount > 0){
                if(currencyFlag){
                  super._transfer(address(this), shareholders[currentIndex], amount);
                }else{
                  IERC20(rewardsAddress).transfer(shareholders[currentIndex], amount);
                }
                tokens = tokens.sub(amount);
            }
            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function setShare(address shareholder) private {
        uint256 size;
        assembly {
            size := extcodesize(shareholder)
        }
        if (size > 0) {
            return;
        }
        if (!_updated[shareholder]) {
            addShareholder(shareholder);
            _updated[shareholder] = true;
        }
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"address[4]","name":"addrs","type":"address[4]"},{"internalType":"uint256[4]","name":"buyFeeSetting_","type":"uint256[4]"},{"internalType":"uint256[4]","name":"sellFeeSetting_","type":"uint256[4]"},{"internalType":"bool","name":"flag","type":"bool"},{"internalType":"address","name":"service","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","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":"iterations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claims","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastProcessedIndex","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":true,"internalType":"address","name":"processor","type":"address"}],"name":"ProcessedDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"AmountLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPFeeRewardsTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_usdtReceiver","outputs":[{"internalType":"contract usdtReceiver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currencyFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasForProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"kill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minLPFeeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"multipleBotlistAddress","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":[],"name":"processRewardWaitBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setAddLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"rewardsFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"deadFee","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setKing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setRemoveLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setRewardsAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minLpRewards","type":"uint256"},{"internalType":"uint256","name":"waitBlock","type":"uint256"}],"name":"setRewardsInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"rewardsFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"deadFee","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shareholders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateGasForProcessing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040819052601680546001600160a01b03191661dead179055601b805460ff19908116600190811790925560006020556014602355602980549091169091179055620055a838819003908190833981016040819052620000619162000dda565b88888782600390805190602001906200007c92919062000bd9565b5081516200009290600490602085019062000bd9565b506005805460ff191660ff9290921691909117905550620000bc9050620000b63390565b62000736565b6020850151601880546001600160a01b03199081166001600160a01b039384161790915560408088015160178054909316931692831790915551620001019062000c68565b6001600160a01b039091168152602001604051809103906000f0801580156200012e573d6000803e3d6000fd5b50602280546001600160a01b0319166001600160a01b0392909216919091179055602b805460ff191683151590811790915560ff16156200018157601980546001600160a01b03191630179055620001a9565b8460036020020151601980546001600160a01b0319166001600160a01b039092169190911790555b83516009819055602080860151600b819055604080880151600d8190556060808a0151600f8190558951600a5589860151600c5592890151600e55880151601055606494620002209492936200020c938492919062001e3d62000790821b17901c565b6200079060201b62001e3d1790919060201c565b1115620002745760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2062757920666565206973206f766572203130302500000000000060448201526064015b60405180910390fd5b6064620002a26010546200020c600e546200020c600c54600a546200079060201b62001e3d1790919060201c565b1115620002f25760405162461bcd60e51b815260206004820152601b60248201527f546f74616c2073656c6c20666565206973206f7665722031303025000000000060448201526064016200026b565b60006200030187600a6200101c565b6200030d9089620010db565b905062000346620f424062000332600284620007fc60201b62001ea31790919060201c565b6200088360201b62001f221790919060201c565b60085560278190556028819055602b5460ff161562000375576200036c87600a6200101c565b601e5562000410565b601960009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c457600080fd5b505afa158015620003d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ff919062000f17565b6200040c90600a6200101c565b601e555b620493e0601a5560008681602002015190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045e57600080fd5b505afa15801562000473573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000499919062000dbc565b6017546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c6539690604401602060405180830381600087803b158015620004e657600080fd5b505af1158015620004fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000521919062000dbc565b600680546001600160a01b038086166001600160a01b0319928316179092556007805492841692909116919091179055905062000560816001620008cd565b620005846200057c60055461010090046001600160a01b031690565b6001620009b8565b6018546200059d906001600160a01b03166001620009b8565b620005aa306001620009b8565b600160246000620005c860055461010090046001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560075482168152602490935281832080548516600190811790915530845282842080548616821790556016548216845282842080548616821790556018549091168352908220805490931681179092556025906200066160055461010090046001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556016548216815260259093528183208054851660019081179091553084528284208054861682179055601854909116835291208054909216179055620006ed620006e660055461010090046001600160a01b031690565b8462000aa1565b6040516001600160a01b038516903480156108fc02916000818181858888f1935050505015801562000723573d6000803e3d6000fd5b5050505050505050505050505062001199565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000806200079f838562000f95565b905083811015620007f35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016200026b565b90505b92915050565b6000826200080d57506000620007f6565b60006200081b8385620010db565b9050826200082a858362000fb0565b14620007f35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016200026b565b6000620007f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000b9d60201b60201c565b6001600160a01b0382166000908152602c602052604090205460ff1615158115151415620009645760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084016200026b565b6001600160a01b0382166000818152602c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b0361010090910416331462000a1a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200026b565b6001600160a01b0382166000908152602a602052604090205460ff1615158115151462000a9d576001600160a01b0382166000818152602a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25b5050565b6001600160a01b03821662000af95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200026b565b62000b15816002546200079060201b62001e3d1790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000b4891839062001e3d62000790821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000818362000bc15760405162461bcd60e51b81526004016200026b919062000f35565b50600062000bd0848662000fb0565b95945050505050565b82805462000be79062001130565b90600052602060002090601f01602090048101928262000c0b576000855562000c56565b82601f1062000c2657805160ff191683800117855562000c56565b8280016001018555821562000c56579182015b8281111562000c5657825182559160200191906001019062000c39565b5062000c6492915062000c76565b5090565b6101e680620053c283390190565b5b8082111562000c64576000815560010162000c77565b80516001600160a01b038116811462000ca557600080fd5b919050565b600082601f83011262000cbc57600080fd5b62000cc662000f6a565b80838560808601111562000cd957600080fd5b60005b600481101562000cfd57815184526020938401939091019060010162000cdc565b509095945050505050565b8051801515811462000ca557600080fd5b600082601f83011262000d2b57600080fd5b81516001600160401b038082111562000d485762000d4862001183565b604051601f8301601f19908116603f0116810190828211818310171562000d735762000d7362001183565b8160405283815286602085880101111562000d8d57600080fd5b62000da0846020830160208901620010fd565b9695505050505050565b805160ff8116811462000ca557600080fd5b60006020828403121562000dcf57600080fd5b620007f38262000c8d565b60008060008060008060008060006102408a8c03121562000dfa57600080fd5b89516001600160401b038082111562000e1257600080fd5b62000e208d838e0162000d19565b9a5060208c015191508082111562000e3757600080fd5b5062000e468c828d0162000d19565b98505060408a0151965062000e5e60608b0162000daa565b95508a609f8b011262000e7057600080fd5b62000e7a62000f6a565b8060808c016101008d018e81111562000e9257600080fd5b60005b600481101562000ec05762000eaa8362000c8d565b8552602094850194929092019160010162000e95565b5082985062000ed08f8262000caa565b97505050505062000ee68b6101808c0162000caa565b925062000ef76102008b0162000d08565b915062000f086102208b0162000c8d565b90509295985092959850929598565b60006020828403121562000f2a57600080fd5b620007f38262000daa565b602081526000825180602084015262000f56816040850160208701620010fd565b601f01601f19169190910160400192915050565b604051608081016001600160401b038111828210171562000f8f5762000f8f62001183565b60405290565b6000821982111562000fab5762000fab6200116d565b500190565b60008262000fce57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200101457816000190482111562000ff85762000ff86200116d565b808516156200100657918102915b93841c939080029062000fd8565b509250929050565b6000620007f360ff8416836000826200103857506001620007f6565b816200104757506000620007f6565b81600181146200106057600281146200106b576200108b565b6001915050620007f6565b60ff8411156200107f576200107f6200116d565b50506001821b620007f6565b5060208310610133831016604e8410600b8410161715620010b0575081810a620007f6565b620010bc838362000fd3565b8060001904821115620010d357620010d36200116d565b029392505050565b6000816000190483118215151615620010f857620010f86200116d565b500290565b60005b838110156200111a57818101518382015260200162001100565b838111156200112a576000848401525b50505050565b600181811c908216806200114557607f821691505b602082108114156200116757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b61421980620011a96000396000f3fe6080604052600436106104565760003560e01c80638da5cb5b1161023f578063c49b9a8011610139578063e5c2b0a6116100b6578063f2fde38b1161007a578063f2fde38b14610d24578063f637434214610d44578063f832679514610d5a578063f84ba65d14610d70578063f872858a14610d9057600080fd5b8063e5c2b0a614610c8e578063eb671e9114610cae578063ec28438a14610cce578063f11a24d314610cee578063f1d5f51714610d0457600080fd5b8063d2a8b440116100fd578063d2a8b44014610be7578063dd62ed3e14610bfc578063e2f4560514610c42578063e32759cf14610c58578063e4bf1bed14610c6e57600080fd5b8063c49b9a8014610b41578063c7f063d314610b61578063c816841b14610b81578063c867d60b14610ba1578063cfe0e61914610bd157600080fd5b8063a9059cbb116101c7578063bba30f8f1161018b578063bba30f8f14610aab578063bfc3137e14610acb578063c024666814610ae1578063c0973eed14610b01578063c492f04614610b2157600080fd5b8063a9059cbb146109fb578063ab377daa14610a1b578063afa4f3b214610a3b578063b340a95414610a5b578063b62496f514610a7b57600080fd5b80639a55fff01161020e5780639a55fff0146109655780639a7a23d6146109855780639ab4a445146109a55780639c1b8af5146109c5578063a457c2d7146109db57600080fd5b80638da5cb5b146109015780638de743b314610924578063921369131461093a57806395d89b411461095057600080fd5b806341c0e1b51161035057806370a08231116102d8578063807c2d9c1161029c578063807c2d9c1461086157806385141a7714610877578063871c128d14610897578063892400f3146108b75780638b42507f146108d157600080fd5b806370a08231146107ca578063715018a61461080057806379dc880c146108155780637bce5a04146108355780637d1db4a51461084b57600080fd5b8063557ed1ba1161031f578063557ed1ba146107415780635d098b3814610754578063615223dc14610774578063621823e61461079457806365b8dbc0146107aa57600080fd5b806341c0e1b5146106c25780634412478b146106d85780634a74bb02146106ee5780634fbee1931461070857600080fd5b806323b872dd116103de57806339509351116103a257806339509351146106365780633b1cd187146106565780633df4ddf41461066c5780633e0e24fa146106825780634144d9e4146106a257600080fd5b806323b872dd146105a857806324942a04146105c85780632563ae83146105de578063313ce567146105fe5780633926876d1461062057600080fd5b8063095ea7b311610425578063095ea7b3146104d95780631694505e1461050957806318160ddd146105415780631cdd3be3146105565780632198cf6c1461058657600080fd5b806302df64d61461046257806305d52b9c1461048b57806306fdde03146104a157806308b2a12c146104c357600080fd5b3661045d57005b600080fd5b34801561046e57600080fd5b5061047860095481565b6040519081526020015b60405180910390f35b34801561049757600080fd5b50610478601e5481565b3480156104ad57600080fd5b506104b6610daa565b6040516104829190613ed8565b3480156104cf57600080fd5b50610478600a5481565b3480156104e557600080fd5b506104f96104f4366004613c9a565b610e3c565b6040519015158152602001610482565b34801561051557600080fd5b50600654610529906001600160a01b031681565b6040516001600160a01b039091168152602001610482565b34801561054d57600080fd5b50600254610478565b34801561056257600080fd5b506104f9610571366004613bb8565b60266020526000908152604090205460ff1681565b34801561059257600080fd5b506105a66105a1366004613c6c565b610e53565b005b3480156105b457600080fd5b506104f96105c3366004613c2b565b610eb7565b3480156105d457600080fd5b5061047860105481565b3480156105ea57600080fd5b506105a66105f9366004613d4c565b610f20565b34801561060a57600080fd5b5060055460405160ff9091168152602001610482565b34801561062c57600080fd5b5061047860125481565b34801561064257600080fd5b506104f9610651366004613c9a565b610f63565b34801561066257600080fd5b5061047860145481565b34801561067857600080fd5b50610478601f5481565b34801561068e57600080fd5b506105a661069d366004613dfd565b610f99565b3480156106ae57600080fd5b50601854610529906001600160a01b031681565b3480156106ce57600080fd5b5061047860205481565b3480156106e457600080fd5b50610478601d5481565b3480156106fa57600080fd5b50601b546104f99060ff1681565b34801561071457600080fd5b506104f9610723366004613bb8565b6001600160a01b03166000908152602a602052604090205460ff1690565b34801561074d57600080fd5b5042610478565b34801561076057600080fd5b506105a661076f366004613bb8565b610fd4565b34801561078057600080fd5b506105a661078f366004613bb8565b61103e565b3480156107a057600080fd5b5061047860235481565b3480156107b657600080fd5b506105a66107c5366004613bb8565b6110be565b3480156107d657600080fd5b506104786107e5366004613bb8565b6001600160a01b031660009081526020819052604090205490565b34801561080c57600080fd5b506105a6611388565b34801561082157600080fd5b506105a6610830366004613dcb565b6113c4565b34801561084157600080fd5b50610478600d5481565b34801561085757600080fd5b5061047860275481565b34801561086d57600080fd5b5061047860285481565b34801561088357600080fd5b50601654610529906001600160a01b031681565b3480156108a357600080fd5b506105a66108b2366004613dcb565b611446565b3480156108c357600080fd5b50602b546104f99060ff1681565b3480156108dd57600080fd5b506104f96108ec366004613bb8565b60256020526000908152604090205460ff1681565b34801561090d57600080fd5b5060055461010090046001600160a01b0316610529565b34801561093057600080fd5b50610478600f5481565b34801561094657600080fd5b50610478600e5481565b34801561095c57600080fd5b506104b6611510565b34801561097157600080fd5b506105a6610980366004613cc6565b61151f565b34801561099157600080fd5b506105a66109a0366004613c6c565b6115c6565b3480156109b157600080fd5b50601754610529906001600160a01b031681565b3480156109d157600080fd5b50610478601a5481565b3480156109e757600080fd5b506104f96109f6366004613c9a565b611696565b348015610a0757600080fd5b506104f9610a16366004613c9a565b6116e5565b348015610a2757600080fd5b50610529610a36366004613dcb565b6116f2565b348015610a4757600080fd5b506105a6610a56366004613dcb565b61171c565b348015610a6757600080fd5b50602254610529906001600160a01b031681565b348015610a8757600080fd5b506104f9610a96366004613bb8565b602c6020526000908152604090205460ff1681565b348015610ab757600080fd5b506105a6610ac6366004613dcb565b611751565b348015610ad757600080fd5b5061047860155481565b348015610aed57600080fd5b506105a6610afc366004613c6c565b6117d3565b348015610b0d57600080fd5b50601954610529906001600160a01b031681565b348015610b2d57600080fd5b506105a6610b3c366004613cc6565b611888565b348015610b4d57600080fd5b506105a6610b5c366004613d4c565b61196a565b348015610b6d57600080fd5b506105a6610b7c366004613dcb565b6119ad565b348015610b8d57600080fd5b50600754610529906001600160a01b031681565b348015610bad57600080fd5b506104f9610bbc366004613bb8565b60246020526000908152604090205460ff1681565b348015610bdd57600080fd5b5061047860135481565b348015610bf357600080fd5b506105a6611a2a565b348015610c0857600080fd5b50610478610c17366004613bf2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610c4e57600080fd5b5061047860085481565b348015610c6457600080fd5b5061047860215481565b348015610c7a57600080fd5b506105a6610c89366004613e4d565b611b08565b348015610c9a57600080fd5b506105a6610ca9366004613dcb565b611bb5565b348015610cba57600080fd5b506105a6610cc9366004613e4d565b611c30565b348015610cda57600080fd5b506105a6610ce9366004613dcb565b611cd7565b348015610cfa57600080fd5b50610478600b5481565b348015610d1057600080fd5b506105a6610d1f366004613dcb565b611d0c565b348015610d3057600080fd5b506105a6610d3f366004613bb8565b611d41565b348015610d5057600080fd5b50610478600c5481565b348015610d6657600080fd5b5061047860115481565b348015610d7c57600080fd5b506105a6610d8b366004613c6c565b611de2565b348015610d9c57600080fd5b506029546104f99060ff1681565b606060038054610db9906140cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610de5906140cb565b8015610e325780601f10610e0757610100808354040283529160200191610e32565b820191906000526020600020905b815481529060010190602001808311610e1557829003601f168201915b5050505050905090565b6000610e49338484611f64565b5060015b92915050565b6005546001600160a01b03610100909104163314610e8c5760405162461bcd60e51b8152600401610e8390613f70565b60405180910390fd5b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6000610ec4848484612089565b610f168433610f1185604051806060016040528060288152602001614197602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612921565b611f64565b5060019392505050565b6005546001600160a01b03610100909104163314610f505760405162461bcd60e51b8152600401610e8390613f70565b6029805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e49918590610f119086611e3d565b6005546001600160a01b03610100909104163314610fc95760405162461bcd60e51b8152600401610e8390613f70565b601e91909155602355565b6005546001600160a01b036101009091041633146110045760405162461bcd60e51b8152600401610e8390613f70565b601880546001600160a01b039092166001600160a01b0319909216821790556000908152602a60205260409020805460ff19166001179055565b6005546001600160a01b0361010090910416331461106e5760405162461bcd60e51b8152600401610e8390613f70565b6001600160a01b03811630141561109157602b805460ff1916600117905561109c565b602b805460ff191690555b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b036101009091041633146110ee5760405162461bcd60e51b8152600401610e8390613f70565b6006546001600160a01b03828116911614156111585760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610e83565b6006546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a0155916004808301926020929190829003018186803b1580156111ea57600080fd5b505afa1580156111fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112229190613bd5565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561127f57600080fd5b505afa158015611293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b79190613bd5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156112ff57600080fd5b505af1158015611313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113379190613bd5565b600780546001600160a01b0319166001600160a01b038316179055905061135f81600161295b565b50506007546001600160a01b03166000908152602460205260409020805460ff19166001179055565b6005546001600160a01b036101009091041633146113b85760405162461bcd60e51b8152600401610e8390613f70565b6113c26000612a44565b565b6005546001600160a01b036101009091041633146113f45760405162461bcd60e51b8152600401610e8390613f70565b60198111156114415760405162461bcd60e51b8152602060048201526019602482015278546f74616c2073656c20666565206973206f7665722032352560381b6044820152606401610e83565b601455565b6005546001600160a01b036101009091041633146114765760405162461bcd60e51b8152600401610e8390613f70565b601a548114156114dd5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b6064820152608401610e83565b601a5460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3601a55565b606060048054610db9906140cb565b6005546001600160a01b0361010090910416331461154f5760405162461bcd60e51b8152600401610e8390613f70565b60005b828110156115c057816026600086868581811061157157611571614137565b90506020020160208101906115869190613bb8565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806115b881614106565b915050611552565b50505050565b6005546001600160a01b036101009091041633146115f65760405162461bcd60e51b8152600401610e8390613f70565b6007546001600160a01b03838116911614156116885760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610e83565b611692828261295b565b5050565b6000610e493384610f11856040518060600160405280602581526020016141bf602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612921565b6000610e49338484612089565b602e818154811061170257600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b0361010090910416331461174c5760405162461bcd60e51b8152600401610e8390613f70565b600855565b6005546001600160a01b036101009091041633146117815760405162461bcd60e51b8152600401610e8390613f70565b60198111156117ce5760405162461bcd60e51b8152602060048201526019602482015278546f74616c2073656c20666565206973206f7665722032352560381b6044820152606401610e83565b601555565b6005546001600160a01b036101009091041633146118035760405162461bcd60e51b8152600401610e8390613f70565b6001600160a01b0382166000908152602a602052604090205460ff16151581151514611692576001600160a01b0382166000818152602a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b036101009091041633146118b85760405162461bcd60e51b8152600401610e8390613f70565b60005b828110156119295781602a60008686858181106118da576118da614137565b90506020020160208101906118ef9190613bb8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061192181614106565b9150506118bb565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161195d93929190613e7f565b60405180910390a1505050565b6005546001600160a01b0361010090910416331461199a5760405162461bcd60e51b8152600401610e8390613f70565b601b805460ff1916911515919091179055565b6005546001600160a01b036101009091041633146119dd5760405162461bcd60e51b8152600401610e8390613f70565b6064811115611a255760405162461bcd60e51b815260206004820152601460248201527306e657756616c7565206d757374203c3d203130360641b6044820152606401610e83565b602055565b6005546001600160a01b03610100909104163314611a5a5760405162461bcd60e51b8152600401610e8390613f70565b3060009081526020819052604090205480611aac5760405162461bcd60e51b8152602060048201526012602482015271746f6b656e2062616c616e6365207a65726f60701b6044820152606401610e83565b6007805460ff60a01b1916600160a01b17905560135415611ad257611ad2601354612a9e565b60115415611ae557611ae5601154612cbf565b60125415611af857611af8601254612e54565b506007805460ff60a01b19169055565b6005546001600160a01b03610100909104163314611b385760405162461bcd60e51b8152600401610e8390613f70565b6064611b5082611b4a8581888a611e3d565b90611e3d565b1115611b9e5760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2062757920666565206973206f76657220313030250000000000006044820152606401610e83565b600992909255600b92909255600d91909155600f55565b6005546001600160a01b03610100909104163314611be55760405162461bcd60e51b8152600401610e8390613f70565b6003811115611c2b5760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610e83565b602155565b6005546001600160a01b03610100909104163314611c605760405162461bcd60e51b8152600401610e8390613f70565b6064611c7282611b4a8581888a611e3d565b1115611cc05760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2073656c20666565206973206f76657220313030250000000000006044820152606401610e83565b600a92909255600c92909255600e91909155601055565b6005546001600160a01b03610100909104163314611d075760405162461bcd60e51b8152600401610e8390613f70565b602755565b6005546001600160a01b03610100909104163314611d3c5760405162461bcd60e51b8152600401610e8390613f70565b602855565b6005546001600160a01b03610100909104163314611d715760405162461bcd60e51b8152600401610e8390613f70565b6001600160a01b038116611dd65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e83565b611ddf81612a44565b50565b6005546001600160a01b03610100909104163314611e125760405162461bcd60e51b8152600401610e8390613f70565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b600080611e4a838561405b565b905083811015611e9c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e83565b9392505050565b600082611eb257506000610e4d565b6000611ebe8385614095565b905082611ecb8583614073565b14611e9c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e83565b6000611e9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612eb2565b6001600160a01b038316611fc65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e83565b6001600160a01b0382166120275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e83565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166120af5760405162461bcd60e51b8152600401610e8390613fa5565b6001600160a01b0382166120d55760405162461bcd60e51b8152600401610e8390613f2d565b6001600160a01b03831660009081526026602052604090205460ff1615801561211757506001600160a01b03821660009081526026602052604090205460ff16155b6121595760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610e83565b8061216f5761216a83836000612ee0565b505050565b6001600160a01b0382166000908152602c602052604090205460ff1680156121af57506007546001600160a01b0316600090815260208190526040902054155b156121b95743601f555b6001600160a01b0383166000908152602a602052604090205460ff161580156121fb57506001600160a01b0382166000908152602a602052604090205460ff16155b15612253576001600160a01b0383166000908152602c602052604090205460ff1680156122365750602054601f54612233919061405b565b43105b156122535760185461216a9084906001600160a01b031683612ee0565b6001600160a01b03831660009081526025602052604090205460ff1615801561229557506001600160a01b03821660009081526025602052604090205460ff16155b156122fd576027548111156122fd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610e83565b306000908152602081905260409020546008548110801590819061232b5750600754600160a01b900460ff16155b801561235057506001600160a01b0385166000908152602c602052604090205460ff16155b801561236f57506005546001600160a01b038681166101009092041614155b801561238e57506005546001600160a01b038581166101009092041614155b801561239c5750601b5460ff165b80156123ad57506123ab612fe9565b155b1561240c576007805460ff60a01b1916600160a01b179055601354156123d8576123d8601354612a9e565b601154156123eb576123eb601154612cbf565b601254156123fe576123fe601254612e54565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152602a602052604090205460ff600160a01b90920482161591168061245a57506001600160a01b0385166000908152602a602052604090205460ff165b15612463575060005b801561281c576001600160a01b0385166000908152602c602052604081205481908190819081908190819060ff16156124a55761249e612fe9565b90506124d1565b6001600160a01b038d166000908152602c602052604090205460ff16156124d1576124ce61312a565b91505b801561251a576124f760646124f16014548e611ea390919063ffffffff16565b90611f22565b9450846012600082825461250b919061405b565b925050819055508496506126f2565b811561253a576124f760646124f16015548e611ea390919063ffffffff16565b6001600160a01b038d166000908152602c602052604090205460ff16156126185761257560646124f1600b548e611ea390919063ffffffff16565b95508560116000828254612589919061405b565b90915550506009546125a3906064906124f1908e90611ea3565b945084601260008282546125b7919061405b565b9091555050600d546125d1906064906124f1908e90611ea3565b935083601360008282546125e5919061405b565b9091555050600f546125ff906064906124f1908e90611ea3565b925061261183611b4a86818a8a611e3d565b96506126f2565b6001600160a01b038c166000908152602c602052604090205460ff16156126f25761265360646124f1600c548e611ea390919063ffffffff16565b95508560116000828254612667919061405b565b9091555050600a54612681906064906124f1908e90611ea3565b94508460126000828254612695919061405b565b9091555050600e546126af906064906124f1908e90611ea3565b935083601360008282546126c3919061405b565b90915550506010546126dd906064906124f1908e90611ea3565b92506126ef83611b4a86818a8a611e3d565b96505b6001600160a01b038d166000908152602c602052604090205460ff168061273157506001600160a01b038c166000908152602c602052604090205460ff165b801561273b575080155b8015612745575081155b156127d057602154156127d0576000805b6021548110156127b35760408051602081018390529081018e90524260608201526080016040516020818303038152906040528051906020012060001c91506127a18f836001612ee0565b806127ab81614106565b915050612756565b506021546127c2906001614095565b6127cc908d6140b4565b9b50505b6127da8b8861326b565b9a5082156127fa576016546127fa908e906001600160a01b031685612ee0565b8615612814576128148d3061280f8a8761326b565b612ee0565b505050505050505b60295460ff16801561284757506001600160a01b03851660009081526024602052604090205460ff16155b1561287d5760285461287285611b4a886001600160a01b031660009081526020819052604090205490565b111561287d57600080fd5b612888868686612ee0565b6001600160a01b03861630148015906128b957506001600160a01b0385166000908152602c602052604090205460ff165b156128c7576128c7866132ad565b600754600160a01b900460ff161580156128ea57506001600160a01b0386163014155b80156129045750602354601d54612901919061405b565b43115b1561291957612914601a5461335c565b43601d555b505050505050565b600081848411156129455760405162461bcd60e51b8152600401610e839190613ed8565b50600061295284866140b4565b95945050505050565b6001600160a01b0382166000908152602c602052604090205460ff16151581151514156129f05760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610e83565b6001600160a01b0382166000818152602c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ad357612ad3614137565b6001600160a01b039283166020918202929092010152601754825191169082906001908110612b0457612b04614137565b6001600160a01b039283166020918202929092010152600654612b2a9130911684611f64565b600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7857600080fd5b505afa158015612b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb09190613bd5565b6017546001600160a01b0390811691161415612c3a5760065460185460405163791ac94760e01b81526001600160a01b039283169263791ac94792612c0392879260009288929116904290600401613fea565b600060405180830381600087803b158015612c1d57600080fd5b505af1158015612c31573d6000803e3d6000fd5b50505050612caa565b600654601854604051635c11d79560e01b81526001600160a01b0392831692635c11d79592612c7792879260009288929116904290600401613fea565b600060405180830381600087803b158015612c9157600080fd5b505af1158015612ca5573d6000803e3d6000fd5b505050505b81601354612cb891906140b4565b6013555050565b6000612ccc826002611f22565b90506000612cda838361326b565b6017546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a082319060240160206040518083038186803b158015612d2357600080fd5b505afa158015612d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5b9190613de4565b9050612d678330613706565b6017546040516370a0823160e01b8152306004820152600091612def9184916001600160a01b0316906370a082319060240160206040518083038186803b158015612db157600080fd5b505afa158015612dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de99190613de4565b9061326b565b9050612dfb838261391c565b84601154612e0991906140b4565b60115560408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b602b5460ff1615612e735780601254612e6d91906140b4565b60125550565b6019546017546001600160a01b0390811691161415612e9b57612e968130613706565b612ea4565b612ea481613a71565b80601254612e6d91906140b4565b60008183612ed35760405162461bcd60e51b8152600401610e839190613ed8565b5060006129528486614073565b6001600160a01b038316612f065760405162461bcd60e51b8152600401610e8390613fa5565b6001600160a01b038216612f2c5760405162461bcd60e51b8152600401610e8390613f2d565b612f6981604051806060016040528060268152602001614171602691396001600160a01b0386166000908152602081905260409020549190612921565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612f989082611e3d565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161207c565b60075460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b15801561303557600080fd5b505afa158015613049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306d9190613d86565b506017546001600160701b039283169450911691506001600160a01b031660003082101561309c57508261309f565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a082319060240160206040518083038186803b1580156130e457600080fd5b505afa1580156130f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311c9190613de4565b919091119695505050505050565b60075460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ae9190613d86565b506017546001600160701b039283169450911691506001600160a01b03166000308210156131dd5750826131e0565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a082319060240160206040518083038186803b15801561322557600080fd5b505afa158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d9190613de4565b909110159695505050505050565b6000611e9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612921565b803b80156132b9575050565b6001600160a01b0382166000908152602d602052604090205460ff1661169257602e80546001600160a01b0384166000818152602f60205260408120839055600183018455929092527f37fa166cbdbfbb1561ccd9ea985ec0218b5e68502e230525f544285b2bdf3d7e0180546001600160a01b03191690911790556001600160a01b0382166000908152602d60205260409020805460ff191660011790555050565b6019546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156133a057600080fd5b505afa1580156133b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d89190613de4565b602b5490915060ff161561340a57613407601354612de9601254612de96011548661326b90919063ffffffff16565b90505b601e54819081101561341b57505050565b602e54806134295750505050565b6000805a905060005b868310801561344057508381105b156136fd5783601c5410613454576000601c555b6000613596600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156134a757600080fd5b505afa1580156134bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134df9190613de4565b600754601c54602e80546124f1936001600160a01b0316926370a082319291811061350c5761350c614137565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260240160206040518083038186803b15801561355757600080fd5b505afa15801561356b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358f9190613de4565b8a90611ea3565b9050808610156135aa575050505050505050565b80156136ba57602b5460ff16156135f4576135ef30602e601c54815481106135d4576135d4614137565b6000918252602090912001546001600160a01b031683612ee0565b6136ad565b601954601c54602e80546001600160a01b039093169263a9059cbb9290811061361f5761361f614137565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561367357600080fd5b505af1158015613687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ab9190613d69565b505b6136b7868261326b565b95505b6136cf6136c85a859061326b565b8590611e3d565b93505a601c805491945060006136e483614106565b919050555081806136f490614106565b92505050613432565b50505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061373b5761373b614137565b6001600160a01b03928316602091820292909201015260175482519116908290600190811061376c5761376c614137565b6001600160a01b0392831660209182029290920101526006546137929130911685611f64565b600654602254604051635c11d79560e01b81526001600160a01b0392831692635c11d795926137cf92889260009288929116904290600401613fea565b600060405180830381600087803b1580156137e957600080fd5b505af11580156137fd573d6000803e3d6000fd5b50506017546022546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a082319060240160206040518083038186803b15801561384b57600080fd5b505afa15801561385f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138839190613de4565b6017546022546040516323b872dd60e01b81526001600160a01b03918216600482015286821660248201526044810184905292935016906323b872dd90606401602060405180830381600087803b1580156138dd57600080fd5b505af11580156138f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139159190613d69565b5050505050565b6006546139349030906001600160a01b031684611f64565b60175460065460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b15801561398457600080fd5b505af1158015613998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139bc9190613d69565b5060065460175460185460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018690526064810185905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b158015613a3957600080fd5b505af1158015613a4d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139159190613e1f565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110613aa857613aa8614137565b6001600160a01b039283166020918202929092010152601754825191169082906001908110613ad957613ad9614137565b6001600160a01b039283166020918202929092010152601954825191169082906002908110613b0a57613b0a614137565b6001600160a01b039283166020918202929092010152600654613b309130911684611f64565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d79590613b69908590600090869030904290600401613fea565b600060405180830381600087803b158015613b8357600080fd5b505af1925050508015613b94575060015b611692575050565b80516001600160701b0381168114613bb357600080fd5b919050565b600060208284031215613bca57600080fd5b8135611e9c8161414d565b600060208284031215613be757600080fd5b8151611e9c8161414d565b60008060408385031215613c0557600080fd5b8235613c108161414d565b91506020830135613c208161414d565b809150509250929050565b600080600060608486031215613c4057600080fd5b8335613c4b8161414d565b92506020840135613c5b8161414d565b929592945050506040919091013590565b60008060408385031215613c7f57600080fd5b8235613c8a8161414d565b91506020830135613c2081614162565b60008060408385031215613cad57600080fd5b8235613cb88161414d565b946020939093013593505050565b600080600060408486031215613cdb57600080fd5b833567ffffffffffffffff80821115613cf357600080fd5b818601915086601f830112613d0757600080fd5b813581811115613d1657600080fd5b8760208260051b8501011115613d2b57600080fd5b60209283019550935050840135613d4181614162565b809150509250925092565b600060208284031215613d5e57600080fd5b8135611e9c81614162565b600060208284031215613d7b57600080fd5b8151611e9c81614162565b600080600060608486031215613d9b57600080fd5b613da484613b9c565b9250613db260208501613b9c565b9150604084015163ffffffff81168114613d4157600080fd5b600060208284031215613ddd57600080fd5b5035919050565b600060208284031215613df657600080fd5b5051919050565b60008060408385031215613e1057600080fd5b50508035926020909101359150565b600080600060608486031215613e3457600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215613e6357600080fd5b5050823594602084013594506040840135936060013592509050565b6040808252810183905260008460608301825b86811015613ec2578235613ea58161414d565b6001600160a01b0316825260209283019290910190600101613e92565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b81811015613f0557858101830151858201604001528201613ee9565b81811115613f17576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561403a5784516001600160a01b031683529383019391830191600101614015565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561406e5761406e614121565b500190565b60008261409057634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156140af576140af614121565b500290565b6000828210156140c6576140c6614121565b500390565b600181811c908216806140df57607f821691505b6020821081141561410057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561411a5761411a614121565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611ddf57600080fd5b8015158114611ddf57600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bbf3c320a29b5c7c1456c4f2a6a5fdab0a4972f68e4b6bcfc6248b2c5f147f1d64736f6c63430008070033608060405234801561001057600080fd5b506040516101e63803806101e683398101604081905261002f916100d9565b600080546001600160a01b03199081166001600160a01b038416908117909255600180543392168217905560405163095ea7b360e01b81526004810191909152600019602482015263095ea7b390604401602060405180830381600087803b15801561009a57600080fd5b505af11580156100ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d29190610109565b505061012b565b6000602082840312156100eb57600080fd5b81516001600160a01b038116811461010257600080fd5b9392505050565b60006020828403121561011b57600080fd5b8151801515811461010257600080fd5b60ad806101396000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80632f48ab7d1460375780638da5cb5b146065575b600080fd5b6000546049906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6001546049906001600160a01b03168156fea2646970667358221220080913a5793ac5ae6e0f402efcd5d07467d4000aa9a23f202a2a87a18b87c65964736f6c63430008070033000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000005208000000000000000000000000000000000000000000000000000000000000001200000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e0000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f7000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f70000000000000000000000000000000000000000000000000000000000000002545400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025454000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106104565760003560e01c80638da5cb5b1161023f578063c49b9a8011610139578063e5c2b0a6116100b6578063f2fde38b1161007a578063f2fde38b14610d24578063f637434214610d44578063f832679514610d5a578063f84ba65d14610d70578063f872858a14610d9057600080fd5b8063e5c2b0a614610c8e578063eb671e9114610cae578063ec28438a14610cce578063f11a24d314610cee578063f1d5f51714610d0457600080fd5b8063d2a8b440116100fd578063d2a8b44014610be7578063dd62ed3e14610bfc578063e2f4560514610c42578063e32759cf14610c58578063e4bf1bed14610c6e57600080fd5b8063c49b9a8014610b41578063c7f063d314610b61578063c816841b14610b81578063c867d60b14610ba1578063cfe0e61914610bd157600080fd5b8063a9059cbb116101c7578063bba30f8f1161018b578063bba30f8f14610aab578063bfc3137e14610acb578063c024666814610ae1578063c0973eed14610b01578063c492f04614610b2157600080fd5b8063a9059cbb146109fb578063ab377daa14610a1b578063afa4f3b214610a3b578063b340a95414610a5b578063b62496f514610a7b57600080fd5b80639a55fff01161020e5780639a55fff0146109655780639a7a23d6146109855780639ab4a445146109a55780639c1b8af5146109c5578063a457c2d7146109db57600080fd5b80638da5cb5b146109015780638de743b314610924578063921369131461093a57806395d89b411461095057600080fd5b806341c0e1b51161035057806370a08231116102d8578063807c2d9c1161029c578063807c2d9c1461086157806385141a7714610877578063871c128d14610897578063892400f3146108b75780638b42507f146108d157600080fd5b806370a08231146107ca578063715018a61461080057806379dc880c146108155780637bce5a04146108355780637d1db4a51461084b57600080fd5b8063557ed1ba1161031f578063557ed1ba146107415780635d098b3814610754578063615223dc14610774578063621823e61461079457806365b8dbc0146107aa57600080fd5b806341c0e1b5146106c25780634412478b146106d85780634a74bb02146106ee5780634fbee1931461070857600080fd5b806323b872dd116103de57806339509351116103a257806339509351146106365780633b1cd187146106565780633df4ddf41461066c5780633e0e24fa146106825780634144d9e4146106a257600080fd5b806323b872dd146105a857806324942a04146105c85780632563ae83146105de578063313ce567146105fe5780633926876d1461062057600080fd5b8063095ea7b311610425578063095ea7b3146104d95780631694505e1461050957806318160ddd146105415780631cdd3be3146105565780632198cf6c1461058657600080fd5b806302df64d61461046257806305d52b9c1461048b57806306fdde03146104a157806308b2a12c146104c357600080fd5b3661045d57005b600080fd5b34801561046e57600080fd5b5061047860095481565b6040519081526020015b60405180910390f35b34801561049757600080fd5b50610478601e5481565b3480156104ad57600080fd5b506104b6610daa565b6040516104829190613ed8565b3480156104cf57600080fd5b50610478600a5481565b3480156104e557600080fd5b506104f96104f4366004613c9a565b610e3c565b6040519015158152602001610482565b34801561051557600080fd5b50600654610529906001600160a01b031681565b6040516001600160a01b039091168152602001610482565b34801561054d57600080fd5b50600254610478565b34801561056257600080fd5b506104f9610571366004613bb8565b60266020526000908152604090205460ff1681565b34801561059257600080fd5b506105a66105a1366004613c6c565b610e53565b005b3480156105b457600080fd5b506104f96105c3366004613c2b565b610eb7565b3480156105d457600080fd5b5061047860105481565b3480156105ea57600080fd5b506105a66105f9366004613d4c565b610f20565b34801561060a57600080fd5b5060055460405160ff9091168152602001610482565b34801561062c57600080fd5b5061047860125481565b34801561064257600080fd5b506104f9610651366004613c9a565b610f63565b34801561066257600080fd5b5061047860145481565b34801561067857600080fd5b50610478601f5481565b34801561068e57600080fd5b506105a661069d366004613dfd565b610f99565b3480156106ae57600080fd5b50601854610529906001600160a01b031681565b3480156106ce57600080fd5b5061047860205481565b3480156106e457600080fd5b50610478601d5481565b3480156106fa57600080fd5b50601b546104f99060ff1681565b34801561071457600080fd5b506104f9610723366004613bb8565b6001600160a01b03166000908152602a602052604090205460ff1690565b34801561074d57600080fd5b5042610478565b34801561076057600080fd5b506105a661076f366004613bb8565b610fd4565b34801561078057600080fd5b506105a661078f366004613bb8565b61103e565b3480156107a057600080fd5b5061047860235481565b3480156107b657600080fd5b506105a66107c5366004613bb8565b6110be565b3480156107d657600080fd5b506104786107e5366004613bb8565b6001600160a01b031660009081526020819052604090205490565b34801561080c57600080fd5b506105a6611388565b34801561082157600080fd5b506105a6610830366004613dcb565b6113c4565b34801561084157600080fd5b50610478600d5481565b34801561085757600080fd5b5061047860275481565b34801561086d57600080fd5b5061047860285481565b34801561088357600080fd5b50601654610529906001600160a01b031681565b3480156108a357600080fd5b506105a66108b2366004613dcb565b611446565b3480156108c357600080fd5b50602b546104f99060ff1681565b3480156108dd57600080fd5b506104f96108ec366004613bb8565b60256020526000908152604090205460ff1681565b34801561090d57600080fd5b5060055461010090046001600160a01b0316610529565b34801561093057600080fd5b50610478600f5481565b34801561094657600080fd5b50610478600e5481565b34801561095c57600080fd5b506104b6611510565b34801561097157600080fd5b506105a6610980366004613cc6565b61151f565b34801561099157600080fd5b506105a66109a0366004613c6c565b6115c6565b3480156109b157600080fd5b50601754610529906001600160a01b031681565b3480156109d157600080fd5b50610478601a5481565b3480156109e757600080fd5b506104f96109f6366004613c9a565b611696565b348015610a0757600080fd5b506104f9610a16366004613c9a565b6116e5565b348015610a2757600080fd5b50610529610a36366004613dcb565b6116f2565b348015610a4757600080fd5b506105a6610a56366004613dcb565b61171c565b348015610a6757600080fd5b50602254610529906001600160a01b031681565b348015610a8757600080fd5b506104f9610a96366004613bb8565b602c6020526000908152604090205460ff1681565b348015610ab757600080fd5b506105a6610ac6366004613dcb565b611751565b348015610ad757600080fd5b5061047860155481565b348015610aed57600080fd5b506105a6610afc366004613c6c565b6117d3565b348015610b0d57600080fd5b50601954610529906001600160a01b031681565b348015610b2d57600080fd5b506105a6610b3c366004613cc6565b611888565b348015610b4d57600080fd5b506105a6610b5c366004613d4c565b61196a565b348015610b6d57600080fd5b506105a6610b7c366004613dcb565b6119ad565b348015610b8d57600080fd5b50600754610529906001600160a01b031681565b348015610bad57600080fd5b506104f9610bbc366004613bb8565b60246020526000908152604090205460ff1681565b348015610bdd57600080fd5b5061047860135481565b348015610bf357600080fd5b506105a6611a2a565b348015610c0857600080fd5b50610478610c17366004613bf2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610c4e57600080fd5b5061047860085481565b348015610c6457600080fd5b5061047860215481565b348015610c7a57600080fd5b506105a6610c89366004613e4d565b611b08565b348015610c9a57600080fd5b506105a6610ca9366004613dcb565b611bb5565b348015610cba57600080fd5b506105a6610cc9366004613e4d565b611c30565b348015610cda57600080fd5b506105a6610ce9366004613dcb565b611cd7565b348015610cfa57600080fd5b50610478600b5481565b348015610d1057600080fd5b506105a6610d1f366004613dcb565b611d0c565b348015610d3057600080fd5b506105a6610d3f366004613bb8565b611d41565b348015610d5057600080fd5b50610478600c5481565b348015610d6657600080fd5b5061047860115481565b348015610d7c57600080fd5b506105a6610d8b366004613c6c565b611de2565b348015610d9c57600080fd5b506029546104f99060ff1681565b606060038054610db9906140cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610de5906140cb565b8015610e325780601f10610e0757610100808354040283529160200191610e32565b820191906000526020600020905b815481529060010190602001808311610e1557829003601f168201915b5050505050905090565b6000610e49338484611f64565b5060015b92915050565b6005546001600160a01b03610100909104163314610e8c5760405162461bcd60e51b8152600401610e8390613f70565b60405180910390fd5b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6000610ec4848484612089565b610f168433610f1185604051806060016040528060288152602001614197602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612921565b611f64565b5060019392505050565b6005546001600160a01b03610100909104163314610f505760405162461bcd60e51b8152600401610e8390613f70565b6029805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e49918590610f119086611e3d565b6005546001600160a01b03610100909104163314610fc95760405162461bcd60e51b8152600401610e8390613f70565b601e91909155602355565b6005546001600160a01b036101009091041633146110045760405162461bcd60e51b8152600401610e8390613f70565b601880546001600160a01b039092166001600160a01b0319909216821790556000908152602a60205260409020805460ff19166001179055565b6005546001600160a01b0361010090910416331461106e5760405162461bcd60e51b8152600401610e8390613f70565b6001600160a01b03811630141561109157602b805460ff1916600117905561109c565b602b805460ff191690555b601980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b036101009091041633146110ee5760405162461bcd60e51b8152600401610e8390613f70565b6006546001600160a01b03828116911614156111585760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610e83565b6006546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a0155916004808301926020929190829003018186803b1580156111ea57600080fd5b505afa1580156111fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112229190613bd5565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561127f57600080fd5b505afa158015611293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b79190613bd5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156112ff57600080fd5b505af1158015611313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113379190613bd5565b600780546001600160a01b0319166001600160a01b038316179055905061135f81600161295b565b50506007546001600160a01b03166000908152602460205260409020805460ff19166001179055565b6005546001600160a01b036101009091041633146113b85760405162461bcd60e51b8152600401610e8390613f70565b6113c26000612a44565b565b6005546001600160a01b036101009091041633146113f45760405162461bcd60e51b8152600401610e8390613f70565b60198111156114415760405162461bcd60e51b8152602060048201526019602482015278546f74616c2073656c20666565206973206f7665722032352560381b6044820152606401610e83565b601455565b6005546001600160a01b036101009091041633146114765760405162461bcd60e51b8152600401610e8390613f70565b601a548114156114dd5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b6064820152608401610e83565b601a5460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3601a55565b606060048054610db9906140cb565b6005546001600160a01b0361010090910416331461154f5760405162461bcd60e51b8152600401610e8390613f70565b60005b828110156115c057816026600086868581811061157157611571614137565b90506020020160208101906115869190613bb8565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806115b881614106565b915050611552565b50505050565b6005546001600160a01b036101009091041633146115f65760405162461bcd60e51b8152600401610e8390613f70565b6007546001600160a01b03838116911614156116885760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610e83565b611692828261295b565b5050565b6000610e493384610f11856040518060600160405280602581526020016141bf602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612921565b6000610e49338484612089565b602e818154811061170257600080fd5b6000918252602090912001546001600160a01b0316905081565b6005546001600160a01b0361010090910416331461174c5760405162461bcd60e51b8152600401610e8390613f70565b600855565b6005546001600160a01b036101009091041633146117815760405162461bcd60e51b8152600401610e8390613f70565b60198111156117ce5760405162461bcd60e51b8152602060048201526019602482015278546f74616c2073656c20666565206973206f7665722032352560381b6044820152606401610e83565b601555565b6005546001600160a01b036101009091041633146118035760405162461bcd60e51b8152600401610e8390613f70565b6001600160a01b0382166000908152602a602052604090205460ff16151581151514611692576001600160a01b0382166000818152602a6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b036101009091041633146118b85760405162461bcd60e51b8152600401610e8390613f70565b60005b828110156119295781602a60008686858181106118da576118da614137565b90506020020160208101906118ef9190613bb8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061192181614106565b9150506118bb565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b3583838360405161195d93929190613e7f565b60405180910390a1505050565b6005546001600160a01b0361010090910416331461199a5760405162461bcd60e51b8152600401610e8390613f70565b601b805460ff1916911515919091179055565b6005546001600160a01b036101009091041633146119dd5760405162461bcd60e51b8152600401610e8390613f70565b6064811115611a255760405162461bcd60e51b815260206004820152601460248201527306e657756616c7565206d757374203c3d203130360641b6044820152606401610e83565b602055565b6005546001600160a01b03610100909104163314611a5a5760405162461bcd60e51b8152600401610e8390613f70565b3060009081526020819052604090205480611aac5760405162461bcd60e51b8152602060048201526012602482015271746f6b656e2062616c616e6365207a65726f60701b6044820152606401610e83565b6007805460ff60a01b1916600160a01b17905560135415611ad257611ad2601354612a9e565b60115415611ae557611ae5601154612cbf565b60125415611af857611af8601254612e54565b506007805460ff60a01b19169055565b6005546001600160a01b03610100909104163314611b385760405162461bcd60e51b8152600401610e8390613f70565b6064611b5082611b4a8581888a611e3d565b90611e3d565b1115611b9e5760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2062757920666565206973206f76657220313030250000000000006044820152606401610e83565b600992909255600b92909255600d91909155600f55565b6005546001600160a01b03610100909104163314611be55760405162461bcd60e51b8152600401610e8390613f70565b6003811115611c2b5760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610e83565b602155565b6005546001600160a01b03610100909104163314611c605760405162461bcd60e51b8152600401610e8390613f70565b6064611c7282611b4a8581888a611e3d565b1115611cc05760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2073656c20666565206973206f76657220313030250000000000006044820152606401610e83565b600a92909255600c92909255600e91909155601055565b6005546001600160a01b03610100909104163314611d075760405162461bcd60e51b8152600401610e8390613f70565b602755565b6005546001600160a01b03610100909104163314611d3c5760405162461bcd60e51b8152600401610e8390613f70565b602855565b6005546001600160a01b03610100909104163314611d715760405162461bcd60e51b8152600401610e8390613f70565b6001600160a01b038116611dd65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e83565b611ddf81612a44565b50565b6005546001600160a01b03610100909104163314611e125760405162461bcd60e51b8152600401610e8390613f70565b6001600160a01b03919091166000908152602560205260409020805460ff1916911515919091179055565b600080611e4a838561405b565b905083811015611e9c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e83565b9392505050565b600082611eb257506000610e4d565b6000611ebe8385614095565b905082611ecb8583614073565b14611e9c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e83565b6000611e9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612eb2565b6001600160a01b038316611fc65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e83565b6001600160a01b0382166120275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e83565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166120af5760405162461bcd60e51b8152600401610e8390613fa5565b6001600160a01b0382166120d55760405162461bcd60e51b8152600401610e8390613f2d565b6001600160a01b03831660009081526026602052604090205460ff1615801561211757506001600160a01b03821660009081526026602052604090205460ff16155b6121595760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610e83565b8061216f5761216a83836000612ee0565b505050565b6001600160a01b0382166000908152602c602052604090205460ff1680156121af57506007546001600160a01b0316600090815260208190526040902054155b156121b95743601f555b6001600160a01b0383166000908152602a602052604090205460ff161580156121fb57506001600160a01b0382166000908152602a602052604090205460ff16155b15612253576001600160a01b0383166000908152602c602052604090205460ff1680156122365750602054601f54612233919061405b565b43105b156122535760185461216a9084906001600160a01b031683612ee0565b6001600160a01b03831660009081526025602052604090205460ff1615801561229557506001600160a01b03821660009081526025602052604090205460ff16155b156122fd576027548111156122fd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610e83565b306000908152602081905260409020546008548110801590819061232b5750600754600160a01b900460ff16155b801561235057506001600160a01b0385166000908152602c602052604090205460ff16155b801561236f57506005546001600160a01b038681166101009092041614155b801561238e57506005546001600160a01b038581166101009092041614155b801561239c5750601b5460ff165b80156123ad57506123ab612fe9565b155b1561240c576007805460ff60a01b1916600160a01b179055601354156123d8576123d8601354612a9e565b601154156123eb576123eb601154612cbf565b601254156123fe576123fe601254612e54565b6007805460ff60a01b191690555b6007546001600160a01b0386166000908152602a602052604090205460ff600160a01b90920482161591168061245a57506001600160a01b0385166000908152602a602052604090205460ff165b15612463575060005b801561281c576001600160a01b0385166000908152602c602052604081205481908190819081908190819060ff16156124a55761249e612fe9565b90506124d1565b6001600160a01b038d166000908152602c602052604090205460ff16156124d1576124ce61312a565b91505b801561251a576124f760646124f16014548e611ea390919063ffffffff16565b90611f22565b9450846012600082825461250b919061405b565b925050819055508496506126f2565b811561253a576124f760646124f16015548e611ea390919063ffffffff16565b6001600160a01b038d166000908152602c602052604090205460ff16156126185761257560646124f1600b548e611ea390919063ffffffff16565b95508560116000828254612589919061405b565b90915550506009546125a3906064906124f1908e90611ea3565b945084601260008282546125b7919061405b565b9091555050600d546125d1906064906124f1908e90611ea3565b935083601360008282546125e5919061405b565b9091555050600f546125ff906064906124f1908e90611ea3565b925061261183611b4a86818a8a611e3d565b96506126f2565b6001600160a01b038c166000908152602c602052604090205460ff16156126f25761265360646124f1600c548e611ea390919063ffffffff16565b95508560116000828254612667919061405b565b9091555050600a54612681906064906124f1908e90611ea3565b94508460126000828254612695919061405b565b9091555050600e546126af906064906124f1908e90611ea3565b935083601360008282546126c3919061405b565b90915550506010546126dd906064906124f1908e90611ea3565b92506126ef83611b4a86818a8a611e3d565b96505b6001600160a01b038d166000908152602c602052604090205460ff168061273157506001600160a01b038c166000908152602c602052604090205460ff165b801561273b575080155b8015612745575081155b156127d057602154156127d0576000805b6021548110156127b35760408051602081018390529081018e90524260608201526080016040516020818303038152906040528051906020012060001c91506127a18f836001612ee0565b806127ab81614106565b915050612756565b506021546127c2906001614095565b6127cc908d6140b4565b9b50505b6127da8b8861326b565b9a5082156127fa576016546127fa908e906001600160a01b031685612ee0565b8615612814576128148d3061280f8a8761326b565b612ee0565b505050505050505b60295460ff16801561284757506001600160a01b03851660009081526024602052604090205460ff16155b1561287d5760285461287285611b4a886001600160a01b031660009081526020819052604090205490565b111561287d57600080fd5b612888868686612ee0565b6001600160a01b03861630148015906128b957506001600160a01b0385166000908152602c602052604090205460ff165b156128c7576128c7866132ad565b600754600160a01b900460ff161580156128ea57506001600160a01b0386163014155b80156129045750602354601d54612901919061405b565b43115b1561291957612914601a5461335c565b43601d555b505050505050565b600081848411156129455760405162461bcd60e51b8152600401610e839190613ed8565b50600061295284866140b4565b95945050505050565b6001600160a01b0382166000908152602c602052604090205460ff16151581151514156129f05760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610e83565b6001600160a01b0382166000818152602c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600580546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ad357612ad3614137565b6001600160a01b039283166020918202929092010152601754825191169082906001908110612b0457612b04614137565b6001600160a01b039283166020918202929092010152600654612b2a9130911684611f64565b600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612b7857600080fd5b505afa158015612b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb09190613bd5565b6017546001600160a01b0390811691161415612c3a5760065460185460405163791ac94760e01b81526001600160a01b039283169263791ac94792612c0392879260009288929116904290600401613fea565b600060405180830381600087803b158015612c1d57600080fd5b505af1158015612c31573d6000803e3d6000fd5b50505050612caa565b600654601854604051635c11d79560e01b81526001600160a01b0392831692635c11d79592612c7792879260009288929116904290600401613fea565b600060405180830381600087803b158015612c9157600080fd5b505af1158015612ca5573d6000803e3d6000fd5b505050505b81601354612cb891906140b4565b6013555050565b6000612ccc826002611f22565b90506000612cda838361326b565b6017546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a082319060240160206040518083038186803b158015612d2357600080fd5b505afa158015612d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5b9190613de4565b9050612d678330613706565b6017546040516370a0823160e01b8152306004820152600091612def9184916001600160a01b0316906370a082319060240160206040518083038186803b158015612db157600080fd5b505afa158015612dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de99190613de4565b9061326b565b9050612dfb838261391c565b84601154612e0991906140b4565b60115560408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b602b5460ff1615612e735780601254612e6d91906140b4565b60125550565b6019546017546001600160a01b0390811691161415612e9b57612e968130613706565b612ea4565b612ea481613a71565b80601254612e6d91906140b4565b60008183612ed35760405162461bcd60e51b8152600401610e839190613ed8565b5060006129528486614073565b6001600160a01b038316612f065760405162461bcd60e51b8152600401610e8390613fa5565b6001600160a01b038216612f2c5760405162461bcd60e51b8152600401610e8390613f2d565b612f6981604051806060016040528060268152602001614171602691396001600160a01b0386166000908152602081905260409020549190612921565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612f989082611e3d565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161207c565b60075460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b15801561303557600080fd5b505afa158015613049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306d9190613d86565b506017546001600160701b039283169450911691506001600160a01b031660003082101561309c57508261309f565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a082319060240160206040518083038186803b1580156130e457600080fd5b505afa1580156130f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311c9190613de4565b919091119695505050505050565b60075460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac91600480820192606092909190829003018186803b15801561317657600080fd5b505afa15801561318a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ae9190613d86565b506017546001600160701b039283169450911691506001600160a01b03166000308210156131dd5750826131e0565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a082319060240160206040518083038186803b15801561322557600080fd5b505afa158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d9190613de4565b909110159695505050505050565b6000611e9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612921565b803b80156132b9575050565b6001600160a01b0382166000908152602d602052604090205460ff1661169257602e80546001600160a01b0384166000818152602f60205260408120839055600183018455929092527f37fa166cbdbfbb1561ccd9ea985ec0218b5e68502e230525f544285b2bdf3d7e0180546001600160a01b03191690911790556001600160a01b0382166000908152602d60205260409020805460ff191660011790555050565b6019546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156133a057600080fd5b505afa1580156133b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d89190613de4565b602b5490915060ff161561340a57613407601354612de9601254612de96011548661326b90919063ffffffff16565b90505b601e54819081101561341b57505050565b602e54806134295750505050565b6000805a905060005b868310801561344057508381105b156136fd5783601c5410613454576000601c555b6000613596600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156134a757600080fd5b505afa1580156134bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134df9190613de4565b600754601c54602e80546124f1936001600160a01b0316926370a082319291811061350c5761350c614137565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260240160206040518083038186803b15801561355757600080fd5b505afa15801561356b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358f9190613de4565b8a90611ea3565b9050808610156135aa575050505050505050565b80156136ba57602b5460ff16156135f4576135ef30602e601c54815481106135d4576135d4614137565b6000918252602090912001546001600160a01b031683612ee0565b6136ad565b601954601c54602e80546001600160a01b039093169263a9059cbb9290811061361f5761361f614137565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b15801561367357600080fd5b505af1158015613687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ab9190613d69565b505b6136b7868261326b565b95505b6136cf6136c85a859061326b565b8590611e3d565b93505a601c805491945060006136e483614106565b919050555081806136f490614106565b92505050613432565b50505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061373b5761373b614137565b6001600160a01b03928316602091820292909201015260175482519116908290600190811061376c5761376c614137565b6001600160a01b0392831660209182029290920101526006546137929130911685611f64565b600654602254604051635c11d79560e01b81526001600160a01b0392831692635c11d795926137cf92889260009288929116904290600401613fea565b600060405180830381600087803b1580156137e957600080fd5b505af11580156137fd573d6000803e3d6000fd5b50506017546022546040516370a0823160e01b81526001600160a01b03918216600482015260009450911691506370a082319060240160206040518083038186803b15801561384b57600080fd5b505afa15801561385f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138839190613de4565b6017546022546040516323b872dd60e01b81526001600160a01b03918216600482015286821660248201526044810184905292935016906323b872dd90606401602060405180830381600087803b1580156138dd57600080fd5b505af11580156138f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139159190613d69565b5050505050565b6006546139349030906001600160a01b031684611f64565b60175460065460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b15801561398457600080fd5b505af1158015613998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139bc9190613d69565b5060065460175460185460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018690526064810185905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b158015613a3957600080fd5b505af1158015613a4d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139159190613e1f565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110613aa857613aa8614137565b6001600160a01b039283166020918202929092010152601754825191169082906001908110613ad957613ad9614137565b6001600160a01b039283166020918202929092010152601954825191169082906002908110613b0a57613b0a614137565b6001600160a01b039283166020918202929092010152600654613b309130911684611f64565b600654604051635c11d79560e01b81526001600160a01b0390911690635c11d79590613b69908590600090869030904290600401613fea565b600060405180830381600087803b158015613b8357600080fd5b505af1925050508015613b94575060015b611692575050565b80516001600160701b0381168114613bb357600080fd5b919050565b600060208284031215613bca57600080fd5b8135611e9c8161414d565b600060208284031215613be757600080fd5b8151611e9c8161414d565b60008060408385031215613c0557600080fd5b8235613c108161414d565b91506020830135613c208161414d565b809150509250929050565b600080600060608486031215613c4057600080fd5b8335613c4b8161414d565b92506020840135613c5b8161414d565b929592945050506040919091013590565b60008060408385031215613c7f57600080fd5b8235613c8a8161414d565b91506020830135613c2081614162565b60008060408385031215613cad57600080fd5b8235613cb88161414d565b946020939093013593505050565b600080600060408486031215613cdb57600080fd5b833567ffffffffffffffff80821115613cf357600080fd5b818601915086601f830112613d0757600080fd5b813581811115613d1657600080fd5b8760208260051b8501011115613d2b57600080fd5b60209283019550935050840135613d4181614162565b809150509250925092565b600060208284031215613d5e57600080fd5b8135611e9c81614162565b600060208284031215613d7b57600080fd5b8151611e9c81614162565b600080600060608486031215613d9b57600080fd5b613da484613b9c565b9250613db260208501613b9c565b9150604084015163ffffffff81168114613d4157600080fd5b600060208284031215613ddd57600080fd5b5035919050565b600060208284031215613df657600080fd5b5051919050565b60008060408385031215613e1057600080fd5b50508035926020909101359150565b600080600060608486031215613e3457600080fd5b8351925060208401519150604084015190509250925092565b60008060008060808587031215613e6357600080fd5b5050823594602084013594506040840135936060013592509050565b6040808252810183905260008460608301825b86811015613ec2578235613ea58161414d565b6001600160a01b0316825260209283019290910190600101613e92565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b81811015613f0557858101830151858201604001528201613ee9565b81811115613f17576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561403a5784516001600160a01b031683529383019391830191600101614015565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561406e5761406e614121565b500190565b60008261409057634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156140af576140af614121565b500290565b6000828210156140c6576140c6614121565b500390565b600181811c908216806140df57607f821691505b6020821081141561410057634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561411a5761411a614121565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611ddf57600080fd5b8015158114611ddf57600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bbf3c320a29b5c7c1456c4f2a6a5fdab0a4972f68e4b6bcfc6248b2c5f147f1d64736f6c63430008070033

Deployed Bytecode Sourcemap

15422:24667:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15653:33;;;;;;;;;;;;;;;;;;;17758:25:1;;;17746:2;17731:18;15653:33:0;;;;;;;;16505:30;;;;;;;;;;;;;;;;4953:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15693:34::-;;;;;;;;;;;;;;;;7127:169;;;;;;;;;;-1:-1:-1;7127:169:0;;;;;:::i;:::-;;:::i;:::-;;;8792:14:1;;8785:22;8767:41;;8755:2;8740:18;7127:169:0;8627:187:1;15497:41:0;;;;;;;;;;-1:-1:-1;15497:41:0;;;;-1:-1:-1;;;;;15497:41:0;;;;;;-1:-1:-1;;;;;6051:32:1;;;6033:51;;6021:2;6006:18;15497:41:0;5887:203:1;6080:108:0;;;;;;;;;;-1:-1:-1;6168:12:0;;6080:108;;16836:46;;;;;;;;;;-1:-1:-1;16836:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25097:135;;;;;;;;;;-1:-1:-1;25097:135:0;;;;;:::i;:::-;;:::i;:::-;;7778:355;;;;;;;;;;-1:-1:-1;7778:355:0;;;;;:::i;:::-;;:::i;15922:26::-;;;;;;;;;;;;;;;;22365:113;;;;;;;;;;-1:-1:-1;22365:113:0;;;;;:::i;:::-;;:::i;5915:100::-;;;;;;;;;;-1:-1:-1;5998:9:0;;5915:100;;5998:9;;;;19245:36:1;;19233:2;19218:18;5915:100:0;19103:184:1;15997:36:0;;;;;;;;;;;;;;;;8542:218;;;;;;;;;;-1:-1:-1;8542:218:0;;;;;:::i;:::-;;:::i;16082:30::-;;;;;;;;;;;;;;;;16542:20;;;;;;;;;;;;;;;;27191:175;;;;;;;;;;-1:-1:-1;27191:175:0;;;;;:::i;:::-;;:::i;16273:38::-;;;;;;;;;;-1:-1:-1;16273:38:0;;;;-1:-1:-1;;;;;16273:38:0;;;16569:23;;;;;;;;;;;;;;;;16466:32;;;;;;;;;;;;;;;;16392:40;;;;;;;;;;-1:-1:-1;16392:40:0;;;;;;;;24362:126;;;;;;;;;;-1:-1:-1;24362:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;24452:28:0;24428:4;24452:28;;;:19;:28;;;;;;;;;24362:126;1090:90;;;;;;;;;;-1:-1:-1;1157:15:0;1090:90;;23309:183;;;;;;;;;;-1:-1:-1;23309:183:0;;;;;:::i;:::-;;:::i;25495:230::-;;;;;;;;;;-1:-1:-1;25495:230:0;;;;;:::i;:::-;;:::i;16673:42::-;;;;;;;;;;;;;;;;21753:606;;;;;;;;;;-1:-1:-1;21753:606:0;;;;;:::i;:::-;;:::i;6251:127::-;;;;;;;;;;-1:-1:-1;6251:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6352:18:0;6325:7;6352:18;;;;;;;;;;;;6251:127;770:103;;;;;;;;;;;;;:::i;26853:158::-;;;;;;;;;;-1:-1:-1;26853:158:0;;;;;:::i;:::-;;:::i;15813:30::-;;;;;;;;;;;;;;;;16889:27;;;;;;;;;;;;;;;;16923:25;;;;;;;;;;;;;;;;16163:70;;;;;;;;;;-1:-1:-1;16163:70:0;;;;-1:-1:-1;;;;;16163:70:0;;;24076:276;;;;;;;;;;-1:-1:-1;24076:276:0;;;;;:::i;:::-;;:::i;17167:24::-;;;;;;;;;;-1:-1:-1;17167:24:0;;;;;;;;16781:48;;;;;;;;;;-1:-1:-1;16781:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;547:87;;;;;;;;;;-1:-1:-1;620:6:0;;;;;-1:-1:-1;;;;;620:6:0;547:87;;15890:25;;;;;;;;;;;;;;;;15850:31;;;;;;;;;;;;;;;;5172:104;;;;;;;;;;;;;:::i;23063:238::-;;;;;;;;;;-1:-1:-1;23063:238:0;;;;;:::i;:::-;;:::i;23500:252::-;;;;;;;;;;-1:-1:-1;23500:252:0;;;;;:::i;:::-;;:::i;16240:26::-;;;;;;;;;;-1:-1:-1;16240:26:0;;;;-1:-1:-1;;;;;16240:26:0;;;16354:31;;;;;;;;;;;;;;;;9263:269;;;;;;;;;;-1:-1:-1;9263:269:0;;;;;:::i;:::-;;:::i;6591:175::-;;;;;;;;;;-1:-1:-1;6591:175:0;;;;;:::i;:::-;;:::i;17463:29::-;;;;;;;;;;-1:-1:-1;17463:29:0;;;;;:::i;:::-;;:::i;25377:110::-;;;;;;;;;;-1:-1:-1;25377:110:0;;;;;:::i;:::-;;:::i;16633:33::-;;;;;;;;;;-1:-1:-1;16633:33:0;;;;-1:-1:-1;;;;;16633:33:0;;;17347:57;;;;;;;;;;-1:-1:-1;17347:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27019:164;;;;;;;;;;-1:-1:-1;27019:164:0;;;;;:::i;:::-;;:::i;16119:33::-;;;;;;;;;;;;;;;;22486:258;;;;;;;;;;-1:-1:-1;22486:258:0;;;;;:::i;:::-;;:::i;16318:29::-;;;;;;;;;;-1:-1:-1;16318:29:0;;;;-1:-1:-1;;;;;16318:29:0;;;22752:305;;;;;;;;;;-1:-1:-1;22752:305:0;;;;;:::i;:::-;;:::i;24972:117::-;;;;;;;;;;-1:-1:-1;24972:117:0;;;;;:::i;:::-;;:::i;26700:145::-;;;;;;;;;;-1:-1:-1;26700:145:0;;;;;:::i;:::-;;:::i;15545:27::-;;;;;;;;;;-1:-1:-1;15545:27:0;;;;-1:-1:-1;;;;;15545:27:0;;;16722:52;;;;;;;;;;-1:-1:-1;16722:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16040:33;;;;;;;;;;;;;;;;24496:468;;;;;;;;;;;;;:::i;6829:151::-;;;;;;;;;;-1:-1:-1;6829:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;6945:18:0;;;6918:7;6945:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6829:151;15611:33;;;;;;;;;;;;;;;;16599:27;;;;;;;;;;;;;;;;25733:393;;;;;;;;;;-1:-1:-1;25733:393:0;;;;;:::i;:::-;;:::i;26535:157::-;;;;;;;;;;-1:-1:-1;26535:157:0;;;;;:::i;:::-;;:::i;26134:395::-;;;;;;;;;;-1:-1:-1;26134:395:0;;;;;:::i;:::-;;:::i;27374:111::-;;;;;;;;;;-1:-1:-1;27374:111:0;;;;;:::i;:::-;;:::i;15736:30::-;;;;;;;;;;;;;;;;27491:102;;;;;;;;;;-1:-1:-1;27491:102:0;;;;;:::i;:::-;;:::i;881:201::-;;;;;;;;;;-1:-1:-1;881:201:0;;;;;:::i;:::-;;:::i;15773:31::-;;;;;;;;;;;;;;;;15957:33;;;;;;;;;;;;;;;;25240:127;;;;;;;;;;-1:-1:-1;25240:127:0;;;;;:::i;:::-;;:::i;16955:35::-;;;;;;;;;;-1:-1:-1;16955:35:0;;;;;;;;4953:100;5007:13;5040:5;5033:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4953:100;:::o;7127:169::-;7210:4;7227:39;173:10;7250:7;7259:6;7227:8;:39::i;:::-;-1:-1:-1;7284:4:0;7127:169;;;;;:::o;25097:135::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;25188:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;25188:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25097:135::o;7778:355::-;7918:4;7935:36;7945:6;7953:9;7964:6;7935:9;:36::i;:::-;7982:121;7991:6;173:10;8013:89;8051:6;8013:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8013:19:0;;;;;;:11;:19;;;;;;;;173:10;8013:33;;;;;;;;;;:37;:89::i;:::-;7982:8;:121::i;:::-;-1:-1:-1;8121:4:0;7778:355;;;;;:::o;22365:113::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;22443:16:::1;:27:::0;;-1:-1:-1;;22443:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22365:113::o;8542:218::-;173:10;8630:4;8679:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8679:34:0;;;;;;;;;;8630:4;;8647:83;;8670:7;;8679:50;;8718:10;8679:38;:50::i;27191:175::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;27283:15:::1;:30:::0;;;;27324:22:::1;:34:::0;27191:175::o;23309:183::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;23390:23:::1;:32:::0;;-1:-1:-1;;;;;23390:32:0;;::::1;-1:-1:-1::0;;;;;;23390:32:0;;::::1;::::0;::::1;::::0;;:23:::1;23433:44:::0;;;:19:::1;:44;::::0;;;;:51;;-1:-1:-1;;23433:51:0::1;23390:32:::0;23433:51:::1;::::0;;23309:183::o;25495:230::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25565:22:0;::::1;25582:4;25565:22;25562:123;;;25603:12;:19:::0;;-1:-1:-1;;25603:19:0::1;25618:4;25603:19;::::0;;25562:123:::1;;;25653:12;:20:::0;;-1:-1:-1;;25653:20:0::1;::::0;;25562:123:::1;25695:14;:22:::0;;-1:-1:-1;;;;;;25695:22:0::1;-1:-1:-1::0;;;;;25695:22:0;;;::::1;::::0;;;::::1;::::0;;25495:230::o;21753:606::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;21862:15:::1;::::0;-1:-1:-1;;;;;21840:38:0;;::::1;21862:15:::0;::::1;21840:38;;21832:86;;;::::0;-1:-1:-1;;;21832:86:0;;13321:2:1;21832:86:0::1;::::0;::::1;13303:21:1::0;13360:2;13340:18;;;13333:30;13399:34;13379:18;;;13372:62;-1:-1:-1;;;13450:18:1;;;13443:33;13493:19;;21832:86:0::1;13119:399:1::0;21832:86:0::1;21976:15;::::0;21934:59:::1;::::0;-1:-1:-1;;;;;21976:15:0;;::::1;::::0;21934:59;::::1;::::0;::::1;::::0;21976:15:::1;::::0;21934:59:::1;22004:15;:48:::0;;-1:-1:-1;;;;;;22004:48:0::1;-1:-1:-1::0;;;;;22004:48:0;::::1;::::0;;::::1;::::0;;;22106:25:::1;::::0;;-1:-1:-1;;;22106:25:0;;;;-1:-1:-1;;22004:48:0;22106:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;22004:48;22106:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22088:65:0::1;;22162:4;22169:15;;;;;;;;;-1:-1:-1::0;;;;;22169:15:0::1;-1:-1:-1::0;;;;;22169:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22088:104;::::0;-1:-1:-1;;;;;;22088:104:0::1;::::0;;;;;;-1:-1:-1;;;;;6325:15:1;;;22088:104:0::1;::::0;::::1;6307:34:1::0;6377:15;;6357:18;;;6350:43;6242:18;;22088:104:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22203:11;:28:::0;;-1:-1:-1;;;;;;22203:28:0::1;-1:-1:-1::0;;;;;22203:28:0;::::1;;::::0;;;-1:-1:-1;22242:50:0::1;22203:28:::0;-1:-1:-1;22242:28:0::1;:50::i;:::-;-1:-1:-1::0;;22331:11:0::1;::::0;-1:-1:-1;;;;;22331:11:0::1;22303:41;::::0;;;:19:::1;:41;::::0;;;;:48;;-1:-1:-1;;22303:48:0::1;22347:4;22303:48;::::0;;21753:606::o;770:103::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;835:30:::1;862:1;835:18;:30::i;:::-;770:103::o:0;26853:158::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;26939:2:::1;26932:3;:9;;26924:47;;;::::0;-1:-1:-1;;;26924:47:0;;17460:2:1;26924:47:0::1;::::0;::::1;17442:21:1::0;17499:2;17479:18;;;17472:30;-1:-1:-1;;;17518:18:1;;;17511:55;17583:18;;26924:47:0::1;17258:349:1::0;26924:47:0::1;26982:15;:21:::0;26853:158::o;24076:276::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;24174:16:::1;;24162:8;:28;;24154:85;;;::::0;-1:-1:-1;;;24154:85:0;;12552:2:1;24154:85:0::1;::::0;::::1;12534:21:1::0;12591:2;12571:18;;;12564:30;12630:34;12610:18;;;12603:62;-1:-1:-1;;;12681:18:1;;;12674:42;12733:19;;24154:85:0::1;12350:408:1::0;24154:85:0::1;24289:16;::::0;24255:51:::1;::::0;24279:8;;24255:51:::1;::::0;;;::::1;24317:16;:27:::0;24076:276::o;5172:104::-;5228:13;5261:7;5254:14;;;;;:::i;23063:238::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;23176:9:::1;23171:119;23191:19:::0;;::::1;23171:119;;;23266:8;23236:14;:27;23251:8;;23260:1;23251:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23236:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23236:27:0;:38;;-1:-1:-1;;23236:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23212:3;::::1;::::0;::::1;:::i;:::-;;;;23171:119;;;;23063:238:::0;;;:::o;23500:252::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;23607:11:::1;::::0;-1:-1:-1;;;;;23599:19:0;;::::1;23607:11:::0;::::1;23599:19;;23591:101;;;::::0;-1:-1:-1;;;23591:101:0;;10086:2:1;23591:101:0::1;::::0;::::1;10068:21:1::0;10125:2;10105:18;;;10098:30;10164:34;10144:18;;;10137:62;10235:34;10215:18;;;10208:62;-1:-1:-1;;;10286:19:1;;;10279:36;10332:19;;23591:101:0::1;9884:473:1::0;23591:101:0::1;23703:41;23732:4;23738:5;23703:28;:41::i;:::-;23500:252:::0;;:::o;9263:269::-;9356:4;9373:129;173:10;9396:7;9405:96;9444:15;9405:96;;;;;;;;;;;;;;;;;173:10;9405:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9405:34:0;;;;;;;;;;;;:38;:96::i;6591:175::-;6677:4;6694:42;173:10;6718:9;6729:6;6694:9;:42::i;17463:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17463:29:0;;-1:-1:-1;17463:29:0;:::o;25377:110::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;25452:18:::1;:27:::0;25377:110::o;27019:164::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;27108:2:::1;27101:3;:9;;27093:47;;;::::0;-1:-1:-1;;;27093:47:0;;17460:2:1;27093:47:0::1;::::0;::::1;17442:21:1::0;17499:2;17479:18;;;17472:30;-1:-1:-1;;;17518:18:1;;;17511:55;17583:18;;27093:47:0::1;17258:349:1::0;27093:47:0::1;27151:18;:24:::0;27019:164::o;22486:258::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22575:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:40;;::::0;::::1;;;22571:166;;-1:-1:-1::0;;;;;22632:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;22632:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;22691:34;;8767:41:1;;;22691:34:0::1;::::0;8740:18:1;22691:34:0::1;;;;;;;22486:258:::0;;:::o;22752:305::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;22870:9:::1;22865:116;22885:19:::0;;::::1;22865:116;;;22961:8;22926:19;:32;22946:8;;22955:1;22946:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22926:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22926:32:0;:43;;-1:-1:-1;;22926:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22906:3;::::1;::::0;::::1;:::i;:::-;;;;22865:116;;;;22998:51;23030:8;;23040;22998:51;;;;;;;;:::i;:::-;;;;;;;;22752:305:::0;;;:::o;24972:117::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;25049:21:::1;:32:::0;;-1:-1:-1;;25049:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24972:117::o;26700:145::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;26783:3:::1;26771:8;:15;;26763:48;;;::::0;-1:-1:-1;;;26763:48:0;;10968:2:1;26763:48:0::1;::::0;::::1;10950:21:1::0;11007:2;10987:18;;;10980:30;-1:-1:-1;;;11026:18:1;;;11019:50;11086:18;;26763:48:0::1;10766:344:1::0;26763:48:0::1;26822:4;:15:::0;26700:145::o;24496:468::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;24595:4:::1;24546:28;6352:18:::0;;;;;;;;;;;24620:24;24612:55:::1;;;::::0;-1:-1:-1;;;24612:55:0;;14080:2:1;24612:55:0::1;::::0;::::1;14062:21:1::0;14119:2;14099:18;;;14092:30;-1:-1:-1;;;14138:18:1;;;14131:48;14196:18;;24612:55:0::1;13878:342:1::0;24612:55:0::1;24678:8;:15:::0;;-1:-1:-1;;;;24678:15:0::1;-1:-1:-1::0;;;24678:15:0::1;::::0;;24708:18:::1;::::0;:22;24704:68:::1;;24732:40;24753:18;;24732:20;:40::i;:::-;24786:18;::::0;:22;24783:61:::1;;24810:34;24825:18;;24810:14;:34::i;:::-;24859:21;::::0;:25;24855:74:::1;;24886:43;24907:21;;24886:20;:43::i;:::-;-1:-1:-1::0;24940:8:0::1;:16:::0;;-1:-1:-1;;;;24940:16:0::1;::::0;;24496:468::o;25733:393::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;25930:3:::1;25870:56;25918:7:::0;25870:43:::1;25900:12:::0;25870:43;:10;25885:9;25870:14:::1;:25::i;:::-;:29:::0;::::1;:43::i;:56::-;:63;;25862:102;;;::::0;-1:-1:-1;;;25862:102:0;;17105:2:1;25862:102:0::1;::::0;::::1;17087:21:1::0;17144:2;17124:18;;;17117:30;17183:28;17163:18;;;17156:56;17229:18;;25862:102:0::1;16903:350:1::0;25862:102:0::1;25975:18;:31:::0;;;;26017:15:::1;:27:::0;;;;26055:15:::1;:30:::0;;;;26096:10:::1;:20:::0;25733:393::o;26535:157::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;26626:1:::1;26614:8;:13;;26606:44;;;::::0;-1:-1:-1;;;26606:44:0;;16353:2:1;26606:44:0::1;::::0;::::1;16335:21:1::0;16392:2;16372:18;;;16365:30;-1:-1:-1;;;16411:18:1;;;16404:48;16469:18;;26606:44:0::1;16151:342:1::0;26606:44:0::1;26661:12;:23:::0;26535:157::o;26134:395::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;26331:3:::1;26271:56;26319:7:::0;26271:43:::1;26301:12:::0;26271:43;:10;26286:9;26271:14:::1;:25::i;:56::-;:63;;26263:102;;;::::0;-1:-1:-1;;;26263:102:0;;13725:2:1;26263:102:0::1;::::0;::::1;13707:21:1::0;13764:2;13744:18;;;13737:30;13803:28;13783:18;;;13776:56;13849:18;;26263:102:0::1;13523:350:1::0;26263:102:0::1;26376:19;:32:::0;;;;26419:16:::1;:28:::0;;;;26458:16:::1;:31:::0;;;;26500:11:::1;:21:::0;26134:395::o;27374:111::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;27451:12:::1;:26:::0;27374:111::o;27491:102::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;27563:10:::1;:22:::0;27491:102::o;881:201::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;970:22:0;::::1;962:73;;;::::0;-1:-1:-1;;;962:73:0;;11317:2:1;962:73:0::1;::::0;::::1;11299:21:1::0;11356:2;11336:18;;;11329:30;11395:34;11375:18;;;11368:62;-1:-1:-1;;;11446:18:1;;;11439:36;11492:19;;962:73:0::1;11115:402:1::0;962:73:0::1;1046:28;1065:8;1046:18;:28::i;:::-;881:201:::0;:::o;25240:127::-;620:6;;-1:-1:-1;;;;;620:6:0;;;;;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25327:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;25327:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25240:127::o;2325:181::-;2383:7;;2415:5;2419:1;2415;:5;:::i;:::-;2403:17;;2444:1;2439;:6;;2431:46;;;;-1:-1:-1;;;2431:46:0;;12965:2:1;2431:46:0;;;12947:21:1;13004:2;12984:18;;;12977:30;13043:29;13023:18;;;13016:57;13090:18;;2431:46:0;12763:351:1;2431:46:0;2497:1;2325:181;-1:-1:-1;;;2325:181:0:o;2858:471::-;2916:7;3161:6;3157:47;;-1:-1:-1;3191:1:0;3184:8;;3157:47;3216:9;3228:5;3232:1;3228;:5;:::i;:::-;3216:17;-1:-1:-1;3261:1:0;3252:5;3256:1;3216:17;3252:5;:::i;:::-;:10;3244:56;;;;-1:-1:-1;;;3244:56:0;;15184:2:1;3244:56:0;;;15166:21:1;15223:2;15203:18;;;15196:30;15262:34;15242:18;;;15235:62;-1:-1:-1;;;15313:18:1;;;15306:31;15354:19;;3244:56:0;14982:397:1;3337:132:0;3395:7;3422:39;3426:1;3429;3422:39;;;;;;;;;;;;;;;;;:3;:39::i;12449:380::-;-1:-1:-1;;;;;12585:19:0;;12577:68;;;;-1:-1:-1;;;12577:68:0;;16700:2:1;12577:68:0;;;16682:21:1;16739:2;16719:18;;;16712:30;16778:34;16758:18;;;16751:62;-1:-1:-1;;;16829:18:1;;;16822:34;16873:19;;12577:68:0;16498:400:1;12577:68:0;-1:-1:-1;;;;;12664:21:0;;12656:68;;;;-1:-1:-1;;;12656:68:0;;11724:2:1;12656:68:0;;;11706:21:1;11763:2;11743:18;;;11736:30;11802:34;11782:18;;;11775:62;-1:-1:-1;;;11853:18:1;;;11846:32;11895:19;;12656:68:0;11522:398:1;12656:68:0;-1:-1:-1;;;;;12737:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12789:32;;17758:25:1;;;12789:32:0;;17731:18:1;12789:32:0;;;;;;;;12449:380;;;:::o;27603:5083::-;-1:-1:-1;;;;;27735:18:0;;27727:68;;;;-1:-1:-1;;;27727:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27814:16:0;;27806:64;;;;-1:-1:-1;;;27806:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27890:20:0;;;;;;:14;:20;;;;;;;;27889:21;:44;;;;-1:-1:-1;;;;;;27915:18:0;;;;;;:14;:18;;;;;;;;27914:19;27889:44;27881:76;;;;-1:-1:-1;;;27881:76:0;;14427:2:1;27881:76:0;;;14409:21:1;14466:2;14446:18;;;14439:30;-1:-1:-1;;;14485:18:1;;;14478:49;14544:18;;27881:76:0;14225:343:1;27881:76:0;27972:11;27968:93;;28000:28;28016:4;28022:2;28026:1;28000:15;:28::i;:::-;27603:5083;;;:::o;27968:93::-;-1:-1:-1;;;;;28076:29:0;;;;;;:25;:29;;;;;;;;:69;;;;-1:-1:-1;28127:11:0;;-1:-1:-1;;;;;28127:11:0;6325:7;6352:18;;;;;;;;;;;28109:36;28076:69;28073:120;;;28169:12;28161:5;:20;28073:120;-1:-1:-1;;;;;28208:25:0;;;;;;:19;:25;;;;;;;;28207:26;:54;;;;-1:-1:-1;;;;;;28238:23:0;;;;;;:19;:23;;;;;;;;28237:24;28207:54;28203:247;;;-1:-1:-1;;;;;28280:31:0;;;;;;:25;:31;;;;;;;;:62;;;;;28338:4;;28330:5;;:12;;;;:::i;:::-;28315;:27;28280:62;28277:162;;;28391:23;;28369:54;;28385:4;;-1:-1:-1;;;;;28391:23:0;28416:6;28369:15;:54::i;28277:162::-;-1:-1:-1;;;;;28466:21:0;;;;;;:15;:21;;;;;;;;28465:22;:46;;;;-1:-1:-1;;;;;;28492:19:0;;;;;;:15;:19;;;;;;;;28491:20;28465:46;28462:153;;;28546:12;;28536:6;:22;;28528:75;;;;-1:-1:-1;;;28528:75:0;;14775:2:1;28528:75:0;;;14757:21:1;14814:2;14794:18;;;14787:30;14853:34;14833:18;;;14826:62;-1:-1:-1;;;14904:18:1;;;14897:38;14952:19;;28528:75:0;14573:404:1;28528:75:0;28676:4;28627:28;6352:18;;;;;;;;;;;28734;;28710:42;;;;;;;28769:33;;-1:-1:-1;28794:8:0;;-1:-1:-1;;;28794:8:0;;;;28793:9;28769:33;:82;;;;-1:-1:-1;;;;;;28820:31:0;;;;;;:25;:31;;;;;;;;28819:32;28769:82;:114;;;;-1:-1:-1;620:6:0;;-1:-1:-1;;;;;28868:15:0;;;620:6;;;;;28868:15;;28769:114;:144;;;;-1:-1:-1;620:6:0;;-1:-1:-1;;;;;28900:13:0;;;620:6;;;;;28900:13;;28769:144;:182;;;;-1:-1:-1;28930:21:0;;;;28769:182;:217;;;;;28969:17;:15;:17::i;:::-;28968:18;28769:217;28765:554;;;29013:8;:15;;-1:-1:-1;;;;29013:15:0;-1:-1:-1;;;29013:15:0;;;29047:18;;:22;29043:68;;29071:40;29092:18;;29071:20;:40::i;:::-;29129:18;;:22;29126:61;;29153:34;29168:18;;29153:14;:34::i;:::-;29206:21;;:25;29202:74;;29233:43;29254:21;;29233:20;:43::i;:::-;29291:8;:16;;-1:-1:-1;;;;29291:16:0;;;28765:554;29349:8;;-1:-1:-1;;;;;29459:25:0;;29333:12;29459:25;;;:19;:25;;;;;;29349:8;-1:-1:-1;;;29349:8:0;;;;;29348:9;;29459:25;;:52;;-1:-1:-1;;;;;;29488:23:0;;;;;;:19;:23;;;;;;;;29459:52;29455:100;;;-1:-1:-1;29538:5:0;29455:100;29572:7;29569:2571;;;-1:-1:-1;;;;;29835:29:0;;29596:12;29835:29;;;:25;:29;;;;;;29596:12;;;;;;;;;;;;29835:29;;29831:204;;;29893:17;:15;:17::i;:::-;29885:25;;29831:204;;;-1:-1:-1;;;;;29936:31:0;;;;;;:25;:31;;;;;;;;29932:103;;;29999:20;:18;:20::i;:::-;29988:31;;29932:103;30054:5;30051:1343;;;30086:36;30118:3;30086:27;30097:15;;30086:6;:10;;:27;;;;:::i;:::-;:31;;:36::i;:::-;30079:43;;30166:4;30141:21;;:29;;;;;;;:::i;:::-;;;;;;;;30196:4;30189:11;;30051:1343;;;30224:8;30221:1173;;;30259:39;30294:3;30259:30;30270:18;;30259:6;:10;;:30;;;;:::i;30221:1173::-;-1:-1:-1;;;;;30400:31:0;;;;;;:25;:31;;;;;;;;30397:997;;;30458:36;30490:3;30458:27;30469:15;;30458:6;:10;;:27;;;;:::i;:36::-;30451:43;;30535:4;30513:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;30576:18:0;;30565:39;;30600:3;;30565:30;;:6;;:10;:30::i;:39::-;30558:46;;30648:4;30623:21;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;30689:15:0;;30678:36;;30710:3;;30678:27;;:6;;:10;:27::i;:36::-;30671:43;;30755:4;30733:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;30796:10:0;;30785:31;;30812:3;;30785:22;;:6;;:10;:22::i;:31::-;30778:38;-1:-1:-1;30842:34:0;30778:38;30842:24;30861:4;30842:24;:4;30851;30842:8;:14::i;:34::-;30835:41;;30397:997;;;-1:-1:-1;;;;;30900:29:0;;;;;;:25;:29;;;;;;;;30897:497;;;30956:37;30989:3;30956:28;30967:16;;30956:6;:10;;:28;;;;:::i;:37::-;30949:44;;31034:4;31012:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;31075:19:0;;31064:40;;31100:3;;31064:31;;:6;;:10;:31::i;:40::-;31057:47;;31148:4;31123:21;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;31189:16:0;;31178:37;;31211:3;;31178:28;;:6;;:10;:28::i;:37::-;31171:44;;31256:4;31234:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;31297:11:0;;31286:32;;31314:3;;31286:23;;:6;;:10;:23::i;:32::-;31279:39;-1:-1:-1;31344:34:0;31279:39;31344:24;31363:4;31344:24;:4;31353;31344:8;:14::i;:34::-;31337:41;;30897:497;-1:-1:-1;;;;;31436:31:0;;;;;;:25;:31;;;;;;;;;:64;;-1:-1:-1;;;;;;31471:29:0;;;;;;:25;:29;;;;;;;;31436:64;31435:76;;;;;31506:5;31505:6;31435:76;:89;;;;;31516:8;31515:9;31435:89;31432:508;;;31548:12;;:16;31544:381;;31588:10;;31621:236;31645:12;;31641:1;:16;31621:236;;;31730:44;;;;;;5755:19:1;;;5790:12;;;5783:28;;;31758:15:0;5827:12:1;;;5820:28;5864:12;;31730:44:0;;;;;;;;;;;;31720:55;;;;;;31712:64;;31691:87;;31805:28;31821:4;31827:2;31831:1;31805:15;:28::i;:::-;31659:3;;;;:::i;:::-;;;;31621:236;;;-1:-1:-1;31889:12:0;;:16;;31904:1;31889:16;:::i;:::-;31879:26;;;;:::i;:::-;;;31565:360;31544:381;31965:16;:6;31976:4;31965:10;:16::i;:::-;31956:25;-1:-1:-1;31999:8:0;;31996:52;;32031:10;;32009:39;;32025:4;;-1:-1:-1;;;;;32031:10:0;32043:4;32009:15;:39::i;:::-;32066:8;;32063:65;;32076:52;32092:4;32106;32113:14;:4;32122;32113:8;:14::i;:::-;32076:15;:52::i;:::-;29581:2559;;;;;;;29569:2571;32155:16;;;;:44;;;;-1:-1:-1;;;;;;32176:23:0;;;;;;:19;:23;;;;;;;;32175:24;32155:44;32152:123;;;32252:10;;32223:25;32241:6;32223:13;32233:2;-1:-1:-1;;;;;6352:18:0;6325:7;6352:18;;;;;;;;;;;;6251:127;32223:25;:39;;32215:48;;;;;;32287:33;32303:4;32309:2;32313:6;32287:15;:33::i;:::-;-1:-1:-1;;;;;32337:21:0;;32353:4;32337:21;;;;:54;;-1:-1:-1;;;;;;32362:29:0;;;;;;:25;:29;;;;;;;;32337:54;32333:101;;;32408:14;32417:4;32408:8;:14::i;:::-;32451:8;;-1:-1:-1;;;32451:8:0;;;;32450:9;:43;;;;-1:-1:-1;;;;;;32472:21:0;;32488:4;32472:21;;32450:43;:113;;;;;32541:22;;32521:17;;:42;;;;:::i;:::-;32506:12;:57;32450:113;32446:233;;;32590:30;32603:16;;32590:12;:30::i;:::-;32655:12;32635:17;:32;32446:233;27716:4970;;;27603:5083;;;:::o;2658:192::-;2744:7;2780:12;2772:6;;;;2764:29;;;;-1:-1:-1;;;2764:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2804:9:0;2816:5;2820:1;2816;:5;:::i;:::-;2804:17;2658:192;-1:-1:-1;;;;;2658:192:0:o;23760:306::-;-1:-1:-1;;;;;23851:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;23843:109;;;;-1:-1:-1;;;23843:109:0;;12127:2:1;23843:109:0;;;12109:21:1;12166:2;12146:18;;;12139:30;12205:34;12185:18;;;12178:62;12276:26;12256:18;;;12249:54;12320:19;;23843:109:0;11925:420:1;23843:109:0;-1:-1:-1;;;;;23963:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;23963:39:0;;;;;;;;;;24018:40;;23963:39;;:31;24018:40;;;23760:306;;:::o;1188:191::-;1281:6;;;-1:-1:-1;;;;;1298:17:0;;;1281:6;1298:17;;;-1:-1:-1;;;;;;1298:17:0;;;;;;1331:40;;1281:6;;;;;;;;1331:40;;1262:16;;1331:40;1251:128;1188:191;:::o;33659:1061::-;33808:16;;;33822:1;33808:16;;;;;;;;33784:21;;33808:16;;;;;;;;;;-1:-1:-1;33808:16:0;33784:40;;33853:4;33835;33840:1;33835:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;33835:23:0;;;:7;;;;;;;;;:23;33879:11;;33869:7;;33879:11;;;33869:4;;33879:11;;33869:7;;;;;;:::i;:::-;-1:-1:-1;;;;;33869:21:0;;;:7;;;;;;;;;:21;33933:15;;33901:57;;33918:4;;33933:15;33951:6;33901:8;:57::i;:::-;33987:15;;;;;;;;;-1:-1:-1;;;;;33987:15:0;-1:-1:-1;;;;;33987:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33972:11;;-1:-1:-1;;;;;33972:11:0;;;:37;;;33969:685;;;34055:15;;34236:23;;34055:269;;-1:-1:-1;;;34055:269:0;;-1:-1:-1;;;;;34055:15:0;;;;:66;;:269;;34140:6;;34055:15;;34213:4;;34236:23;;;34294:15;;34055:269;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33969:685;;;34385:15;;34570:23;;34385:257;;-1:-1:-1;;;34385:257:0;;-1:-1:-1;;;;;34385:15:0;;;;:69;;:257;;34473:6;;34385:15;;34547:4;;34570:23;;;34612:15;;34385:257;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33969:685;34706:6;34685:18;;:27;;;;:::i;:::-;34664:18;:48;-1:-1:-1;;33659:1061:0:o;34728:779::-;34837:12;34852:13;:6;34863:1;34852:10;:13::i;:::-;34837:28;-1:-1:-1;34876:17:0;34896:16;:6;34837:28;34896:10;:16::i;:::-;34957:11;;34950:44;;-1:-1:-1;;;34950:44:0;;34988:4;34950:44;;;6033:51:1;34876:36:0;;-1:-1:-1;34925:22:0;;-1:-1:-1;;;;;34957:11:0;;;;34950:29;;6006:18:1;;34950:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34925:69;;35039:37;35057:4;35070;35039:17;:37::i;:::-;35235:11;;35228:44;;-1:-1:-1;;;35228:44:0;;35266:4;35228:44;;;6033:51:1;35207:18:0;;35228:64;;35277:14;;-1:-1:-1;;;;;35235:11:0;;35228:29;;6006:18:1;;35228:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;:64::i;:::-;35207:85;;35342:39;35359:9;35370:10;35342:16;:39::i;:::-;35434:6;35413:18;;:27;;;;:::i;:::-;35392:18;:48;35456:43;;;18981:25:1;;;19037:2;19022:18;;19015:34;;;19065:18;;;19058:34;;;35456:43:0;;18969:2:1;18954:18;35456:43:0;;;;;;;34776:731;;;;34728:779;:::o;37627:493::-;37769:12;;;;37766:114;;;37843:6;37819:21;;:30;;;;:::i;:::-;37795:21;:54;-1:-1:-1;37627:493:0:o;37766:114::-;37908:14;;37893:11;;-1:-1:-1;;;;;37893:11:0;;;37908:14;;37893:29;37890:158;;;37938:39;37956:6;37971:4;37938:17;:39::i;:::-;37890:158;;;38008:28;38029:6;38008:20;:28::i;:::-;38106:6;38082:21;;:30;;;;:::i;3477:278::-;3563:7;3598:12;3591:5;3583:28;;;;-1:-1:-1;;;3583:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3622:9:0;3634:5;3638:1;3634;:5;:::i;10022:573::-;-1:-1:-1;;;;;10162:20:0;;10154:70;;;;-1:-1:-1;;;10154:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10243:23:0;;10235:71;;;;-1:-1:-1;;;10235:71:0;;;;;;;:::i;:::-;10399;10421:6;10399:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10399:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;10379:17:0;;;:9;:17;;;;;;;;;;;:91;;;;10504:20;;;;;;;:32;;10529:6;10504:24;:32::i;:::-;-1:-1:-1;;;;;10481:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;10552:35;17758:25:1;;;10481:20:0;;10552:35;;;;;;17731:18:1;10552:35:0;17612:177:1;32696:466:0;32809:11;;32856:22;;;-1:-1:-1;;;32856:22:0;;;;32746:10;;-1:-1:-1;;;;;32809:11:0;;32746:10;;;;32809:11;;32856:20;;:22;;;;;;;;;;;;;;;32809:11;32856:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;32912:11:0;;-1:-1:-1;;;;;32832:46:0;;;;-1:-1:-1;32832:46:0;;;-1:-1:-1;;;;;;32912:11:0;32891:18;32979:4;32958:26;;32954:104;;;-1:-1:-1;33005:2:0;32954:104;;;-1:-1:-1;33044:2:0;32954:104;33081:47;;-1:-1:-1;;;33081:47:0;;-1:-1:-1;;;;;6051:32:1;;;33081:47:0;;;6033:51:1;33070:8:0;;33081:28;;;;;;6006:18:1;;33081:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33147:7;;;;;32696:466;-1:-1:-1;;;;;;32696:466:0:o;33170:479::-;33290:11;;33339:22;;;-1:-1:-1;;;33339:22:0;;;;33223:13;;-1:-1:-1;;;;;33290:11:0;;33223:13;;;;33290:11;;33339:20;;:22;;;;;;;;;;;;;;;33290:11;33339:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;33395:11:0;;-1:-1:-1;;;;;33313:48:0;;;;-1:-1:-1;33313:48:0;;;-1:-1:-1;;;;;;33395:11:0;33374:18;33462:4;33441:26;;33437:104;;;-1:-1:-1;33488:2:0;33437:104;;;-1:-1:-1;33527:2:0;33437:104;33564:47;;-1:-1:-1;;;33564:47:0;;-1:-1:-1;;;;;6051:32:1;;;33564:47:0;;;6033:51:1;33553:8:0;;33564:28;;;;;;6006:18:1;;33564:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33633:8;;;;;33170:479;-1:-1:-1;;;;;;33170:479:0:o;2514:136::-;2572:7;2599:43;2603:1;2606;2599:43;;;;;;;;;;;;;;;;;:3;:43::i;39562:347::-;39675:24;;39724:8;;39720:47;;39749:7;39562:347;:::o;39720:47::-;-1:-1:-1;;;;;39782:21:0;;;;;;:8;:21;;;;;;;;39777:125;;40016:12;:19;;-1:-1:-1;;;;;39982:31:0;;;;;;:18;:31;;;;;:53;;;40046:30;;;;;;;;;;;;;-1:-1:-1;;;;;;40046:30:0;;;;;;-1:-1:-1;;;;;39862:21:0;;;;;;:8;:21;;;;;:28;;-1:-1:-1;;39862:28:0;39886:4;39862:28;;;39609:300;39562:347;:::o;38128:1426::-;38205:14;;38198:47;;-1:-1:-1;;;38198:47:0;;38239:4;38198:47;;;6033:51:1;38182:13:0;;-1:-1:-1;;;;;38205:14:0;;38198:32;;6006:18:1;;38198:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38259:12;;38182:63;;-1:-1:-1;38259:12:0;;38256:129;;;38293:80;38354:18;;38293:56;38327:21;;38293:29;38303:18;;38293:5;:9;;:29;;;;:::i;:80::-;38285:88;;38256:129;38440:15;;38412:5;;38431:24;;38428:61;;;38471:7;;38128:1426;:::o;38428:61::-;38526:12;:19;38560:21;38556:34;;38583:7;;;38128:1426;:::o;38556:34::-;38600:15;38630;38648:9;38630:27;;38668:18;38703:844;38720:3;38710:7;:13;:46;;;;;38740:16;38727:10;:29;38710:46;38703:844;;;38793:16;38777:12;;:32;38773:89;;38845:1;38830:12;:16;38773:89;38876:14;38893:107;38973:11;;;;;;;;;-1:-1:-1;;;;;38973:11:0;-1:-1:-1;;;;;38966:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38910:11;;38946:12;;38933;:26;;38893:68;;-1:-1:-1;;;;;38910:11:0;;38903:29;;38933:12;:26;;;;;;:::i;:::-;;;;;;;;;;;38903:57;;;;;;-1:-1:-1;;;;;;38903:57:0;;;-1:-1:-1;;;;;38933:26:0;;;38903:57;;;6033:51:1;6006:18;;38903:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38893:5;;:9;:68::i;:107::-;38876:124;;39028:6;39019;:15;39015:28;;;39036:7;;;;;;;38128:1426;:::o;39015:28::-;39060:10;;39057:329;;39093:12;;;;39090:235;;;39127:66;39151:4;39158:12;39171;;39158:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;39158:26:0;39186:6;39127:15;:66::i;:::-;39090:235;;;39245:14;;39283:12;;39270;:26;;-1:-1:-1;;;;;39245:14:0;;;;39238:31;;39283:12;39270:26;;;;;;:::i;:::-;;;;;;;;;;;39238:67;;;;;;-1:-1:-1;;;;;;39238:67:0;;;-1:-1:-1;;;;;39270:26:0;;;39238:67;;;7723:51:1;7790:18;;;7783:34;;;7696:18;;39238:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;39090:235;39352:18;:6;39363;39352:10;:18::i;:::-;39343:27;;39057:329;39410:35;39422:22;39434:9;39422:7;;:11;:22::i;:::-;39410:7;;:11;:35::i;:::-;39400:45;;39470:9;39494:12;:14;;39460:19;;-1:-1:-1;39494:12:0;:14;;;:::i;:::-;;;;;;39523:12;;;;;:::i;:::-;;;;38758:789;38703:844;;;38171:1383;;;;;;38128:1426;:::o;36160:762::-;36324:16;;;36338:1;36324:16;;;;;;;;36300:21;;36324:16;;;;;;;;;;-1:-1:-1;36324:16:0;36300:40;;36369:4;36351;36356:1;36351:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;36351:23:0;;;:7;;;;;;;;;:23;36395:11;;36385:7;;36395:11;;;36385:4;;36395:11;;36385:7;;;;;;:::i;:::-;-1:-1:-1;;;;;36385:21:0;;;:7;;;;;;;;;:21;36449:15;;36417:62;;36434:4;;36449:15;36467:11;36417:8;:62::i;:::-;36516:15;;36698:13;;36516:237;;-1:-1:-1;;;36516:237:0;;-1:-1:-1;;;;;36516:15:0;;;;:69;;:237;;36600:11;;36516:15;;36671:4;;36698:13;;;36727:15;;36516:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36788:11:0;;36819:13;;36781:53;;-1:-1:-1;;;36781:53:0;;-1:-1:-1;;;;;36819:13:0;;;36781:53;;;6033:51:1;36764:14:0;;-1:-1:-1;36788:11:0;;;-1:-1:-1;36781:29:0;;6006:18:1;;36781:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36852:11;;36886:13;;36845:69;;-1:-1:-1;;;36845:69:0;;-1:-1:-1;;;;;36886:13:0;;;36845:69;;;6644:34:1;6714:15;;;6694:18;;;6687:43;6746:18;;;6739:34;;;36764:70:0;;-1:-1:-1;36852:11:0;;36845:32;;6579:18:1;;36845:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36229:693;;36160:762;;:::o;35515:637::-;35700:15;;35668:62;;35685:4;;-1:-1:-1;;;;;35700:15:0;35718:11;35668:8;:62::i;:::-;35748:11;;35777:15;;35741:64;;-1:-1:-1;;;35741:64:0;;-1:-1:-1;;;;;35777:15:0;;;35741:64;;;7723:51:1;7790:18;;;7783:34;;;35748:11:0;;;35741:27;;7696:18:1;;35741:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;35846:15:0;;35917:11;;36080:23;;35846:298;;-1:-1:-1;;;35846:298:0;;35897:4;35846:298;;;7181:34:1;-1:-1:-1;;;;;35917:11:0;;;7231:18:1;;;7224:43;7283:18;;;7276:34;;;7326:18;;;7319:34;;;35846:15:0;7369:19:1;;;7362:35;;;7413:19;;;7406:35;36080:23:0;;;7457:19:1;;;7450:44;36118:15:0;7510:19:1;;;7503:35;35846:15:0;;;:28;;7115:19:1;;35846:298:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;36930:689::-;37095:16;;;37109:1;37095:16;;;;;;;;;37071:21;;37095:16;;;;;;;;;;-1:-1:-1;37095:16:0;37071:40;;37140:4;37122;37127:1;37122:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37122:23:0;;;:7;;;;;;;;;:23;37166:11;;37156:7;;37166:11;;;37156:4;;37166:11;;37156:7;;;;;;:::i;:::-;-1:-1:-1;;;;;37156:21:0;;;:7;;;;;;;;;:21;37198:14;;37188:7;;37198:14;;;37188:4;;37193:1;;37188:7;;;;;;:::i;:::-;-1:-1:-1;;;;;37188:24:0;;;:7;;;;;;;;;:24;37255:15;;37223:62;;37240:4;;37255:15;37273:11;37223:8;:62::i;:::-;37339:15;;:252;;-1:-1:-1;;;37339:252:0;;-1:-1:-1;;;;;37339:15:0;;;;:69;;:252;;37427:11;;37339:15;;37506:4;;37537;;37561:15;;37339:252;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37322:288;;23500:252;;:::o;14:188:1:-;93:13;;-1:-1:-1;;;;;135:42:1;;125:53;;115:81;;192:1;189;182:12;115:81;14:188;;;:::o;207:247::-;266:6;319:2;307:9;298:7;294:23;290:32;287:52;;;335:1;332;325:12;287:52;374:9;361:23;393:31;418:5;393:31;:::i;459:251::-;529:6;582:2;570:9;561:7;557:23;553:32;550:52;;;598:1;595;588:12;550:52;630:9;624:16;649:31;674:5;649:31;:::i;975:388::-;1043:6;1051;1104:2;1092:9;1083:7;1079:23;1075:32;1072:52;;;1120:1;1117;1110:12;1072:52;1159:9;1146:23;1178:31;1203:5;1178:31;:::i;:::-;1228:5;-1:-1:-1;1285:2:1;1270:18;;1257:32;1298:33;1257:32;1298:33;:::i;:::-;1350:7;1340:17;;;975:388;;;;;:::o;1368:456::-;1445:6;1453;1461;1514:2;1502:9;1493:7;1489:23;1485:32;1482:52;;;1530:1;1527;1520:12;1482:52;1569:9;1556:23;1588:31;1613:5;1588:31;:::i;:::-;1638:5;-1:-1:-1;1695:2:1;1680:18;;1667:32;1708:33;1667:32;1708:33;:::i;:::-;1368:456;;1760:7;;-1:-1:-1;;;1814:2:1;1799:18;;;;1786:32;;1368:456::o;1829:382::-;1894:6;1902;1955:2;1943:9;1934:7;1930:23;1926:32;1923:52;;;1971:1;1968;1961:12;1923:52;2010:9;1997:23;2029:31;2054:5;2029:31;:::i;:::-;2079:5;-1:-1:-1;2136:2:1;2121:18;;2108:32;2149:30;2108:32;2149:30;:::i;2216:315::-;2284:6;2292;2345:2;2333:9;2324:7;2320:23;2316:32;2313:52;;;2361:1;2358;2351:12;2313:52;2400:9;2387:23;2419:31;2444:5;2419:31;:::i;:::-;2469:5;2521:2;2506:18;;;;2493:32;;-1:-1:-1;;;2216:315:1:o;2536:750::-;2628:6;2636;2644;2697:2;2685:9;2676:7;2672:23;2668:32;2665:52;;;2713:1;2710;2703:12;2665:52;2753:9;2740:23;2782:18;2823:2;2815:6;2812:14;2809:34;;;2839:1;2836;2829:12;2809:34;2877:6;2866:9;2862:22;2852:32;;2922:7;2915:4;2911:2;2907:13;2903:27;2893:55;;2944:1;2941;2934:12;2893:55;2984:2;2971:16;3010:2;3002:6;2999:14;2996:34;;;3026:1;3023;3016:12;2996:34;3081:7;3074:4;3064:6;3061:1;3057:14;3053:2;3049:23;3045:34;3042:47;3039:67;;;3102:1;3099;3092:12;3039:67;3133:4;3125:13;;;;-1:-1:-1;3157:6:1;-1:-1:-1;;3198:20:1;;3185:34;3228:28;3185:34;3228:28;:::i;:::-;3275:5;3265:15;;;2536:750;;;;;:::o;3291:241::-;3347:6;3400:2;3388:9;3379:7;3375:23;3371:32;3368:52;;;3416:1;3413;3406:12;3368:52;3455:9;3442:23;3474:28;3496:5;3474:28;:::i;3537:245::-;3604:6;3657:2;3645:9;3636:7;3632:23;3628:32;3625:52;;;3673:1;3670;3663:12;3625:52;3705:9;3699:16;3724:28;3746:5;3724:28;:::i;3787:450::-;3874:6;3882;3890;3943:2;3931:9;3922:7;3918:23;3914:32;3911:52;;;3959:1;3956;3949:12;3911:52;3982:40;4012:9;3982:40;:::i;:::-;3972:50;;4041:49;4086:2;4075:9;4071:18;4041:49;:::i;:::-;4031:59;;4133:2;4122:9;4118:18;4112:25;4177:10;4170:5;4166:22;4159:5;4156:33;4146:61;;4203:1;4200;4193:12;4242:180;4301:6;4354:2;4342:9;4333:7;4329:23;4325:32;4322:52;;;4370:1;4367;4360:12;4322:52;-1:-1:-1;4393:23:1;;4242:180;-1:-1:-1;4242:180:1:o;4427:184::-;4497:6;4550:2;4538:9;4529:7;4525:23;4521:32;4518:52;;;4566:1;4563;4556:12;4518:52;-1:-1:-1;4589:16:1;;4427:184;-1:-1:-1;4427:184:1:o;4616:248::-;4684:6;4692;4745:2;4733:9;4724:7;4720:23;4716:32;4713:52;;;4761:1;4758;4751:12;4713:52;-1:-1:-1;;4784:23:1;;;4854:2;4839:18;;;4826:32;;-1:-1:-1;4616:248:1:o;4869:306::-;4957:6;4965;4973;5026:2;5014:9;5005:7;5001:23;4997:32;4994:52;;;5042:1;5039;5032:12;4994:52;5071:9;5065:16;5055:26;;5121:2;5110:9;5106:18;5100:25;5090:35;;5165:2;5154:9;5150:18;5144:25;5134:35;;4869:306;;;;;:::o;5180:385::-;5266:6;5274;5282;5290;5343:3;5331:9;5322:7;5318:23;5314:33;5311:53;;;5360:1;5357;5350:12;5311:53;-1:-1:-1;;5383:23:1;;;5453:2;5438:18;;5425:32;;-1:-1:-1;5504:2:1;5489:18;;5476:32;;5555:2;5540:18;5527:32;;-1:-1:-1;5180:385:1;-1:-1:-1;5180:385:1:o;7828:794::-;8050:2;8062:21;;;8035:18;;8118:22;;;8002:4;8197:6;8171:2;8156:18;;8002:4;8231:304;8245:6;8242:1;8239:13;8231:304;;;8320:6;8307:20;8340:31;8365:5;8340:31;:::i;:::-;-1:-1:-1;;;;;8396:31:1;8384:44;;8451:4;8510:15;;;;8475:12;;;;8424:1;8260:9;8231:304;;;8235:3;8552;8544:11;;;;8607:6;8600:14;8593:22;8586:4;8575:9;8571:20;8564:52;7828:794;;;;;;:::o;9282:597::-;9394:4;9423:2;9452;9441:9;9434:21;9484:6;9478:13;9527:6;9522:2;9511:9;9507:18;9500:34;9552:1;9562:140;9576:6;9573:1;9570:13;9562:140;;;9671:14;;;9667:23;;9661:30;9637:17;;;9656:2;9633:26;9626:66;9591:10;;9562:140;;;9720:6;9717:1;9714:13;9711:91;;;9790:1;9785:2;9776:6;9765:9;9761:22;9757:31;9750:42;9711:91;-1:-1:-1;9863:2:1;9842:15;-1:-1:-1;;9838:29:1;9823:45;;;;9870:2;9819:54;;9282:597;-1:-1:-1;;;9282:597:1:o;10362:399::-;10564:2;10546:21;;;10603:2;10583:18;;;10576:30;10642:34;10637:2;10622:18;;10615:62;-1:-1:-1;;;10708:2:1;10693:18;;10686:33;10751:3;10736:19;;10362:399::o;15384:356::-;15586:2;15568:21;;;15605:18;;;15598:30;15664:34;15659:2;15644:18;;15637:62;15731:2;15716:18;;15384:356::o;15745:401::-;15947:2;15929:21;;;15986:2;15966:18;;;15959:30;16025:34;16020:2;16005:18;;15998:62;-1:-1:-1;;;16091:2:1;16076:18;;16069:35;16136:3;16121:19;;15745:401::o;17794:980::-;18056:4;18104:3;18093:9;18089:19;18135:6;18124:9;18117:25;18161:2;18199:6;18194:2;18183:9;18179:18;18172:34;18242:3;18237:2;18226:9;18222:18;18215:31;18266:6;18301;18295:13;18332:6;18324;18317:22;18370:3;18359:9;18355:19;18348:26;;18409:2;18401:6;18397:15;18383:29;;18430:1;18440:195;18454:6;18451:1;18448:13;18440:195;;;18519:13;;-1:-1:-1;;;;;18515:39:1;18503:52;;18610:15;;;;18575:12;;;;18551:1;18469:9;18440:195;;;-1:-1:-1;;;;;;;18691:32:1;;;;18686:2;18671:18;;18664:60;-1:-1:-1;;;18755:3:1;18740:19;18733:35;18652:3;17794:980;-1:-1:-1;;;17794:980:1:o;19292:128::-;19332:3;19363:1;19359:6;19356:1;19353:13;19350:39;;;19369:18;;:::i;:::-;-1:-1:-1;19405:9:1;;19292:128::o;19425:217::-;19465:1;19491;19481:132;;19535:10;19530:3;19526:20;19523:1;19516:31;19570:4;19567:1;19560:15;19598:4;19595:1;19588:15;19481:132;-1:-1:-1;19627:9:1;;19425:217::o;19647:168::-;19687:7;19753:1;19749;19745:6;19741:14;19738:1;19735:21;19730:1;19723:9;19716:17;19712:45;19709:71;;;19760:18;;:::i;:::-;-1:-1:-1;19800:9:1;;19647:168::o;19820:125::-;19860:4;19888:1;19885;19882:8;19879:34;;;19893:18;;:::i;:::-;-1:-1:-1;19930:9:1;;19820:125::o;19950:380::-;20029:1;20025:12;;;;20072;;;20093:61;;20147:4;20139:6;20135:17;20125:27;;20093:61;20200:2;20192:6;20189:14;20169:18;20166:38;20163:161;;;20246:10;20241:3;20237:20;20234:1;20227:31;20281:4;20278:1;20271:15;20309:4;20306:1;20299:15;20163:161;;19950:380;;;:::o;20335:135::-;20374:3;-1:-1:-1;;20395:17:1;;20392:43;;;20415:18;;:::i;:::-;-1:-1:-1;20462:1:1;20451:13;;20335:135::o;20475:127::-;20536:10;20531:3;20527:20;20524:1;20517:31;20567:4;20564:1;20557:15;20591:4;20588:1;20581:15;20607:127;20668:10;20663:3;20659:20;20656:1;20649:31;20699:4;20696:1;20689:15;20723:4;20720:1;20713:15;20871:131;-1:-1:-1;;;;;20946:31:1;;20936:42;;20926:70;;20992:1;20989;20982:12;21007:118;21093:5;21086:13;21079:21;21072:5;21069:32;21059:60;;21115:1;21112;21105:12

Swarm Source

ipfs://080913a5793ac5ae6e0f402efcd5d07467d4000aa9a23f202a2a87a18b87c659
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.