ETH Price: $3,918.56 (+0.73%)

Token

ERC-20: The Last Ride (RYDER)
 

Overview

Max Total Supply

1,000,000,000 RYDER

Holders

28

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,413,845.762062262382498652 RYDER

Value
$0.00
0x88C2EC6c42ff9B49622f26612A080CE076d5E3B6
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
RYDER

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-22
*/

/**
 *WEBSITE;https://lastryder.io/, telegram;t.me/Lastryderportal
 THE RYDERBOT;https://t.me/lastryderbot
*/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IBEP20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the token decimals.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the token symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the token name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external view returns (address);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address _owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

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

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

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

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

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);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

contract RYDER is IBEP20, Ownable {

    using Address for address;

    // Modifiers
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    bool private inSwapAndLiquify = false;

    // Events
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 BNBReceived,
        uint256 tokensIntoLiqudity
    );
    event MarketingWalletPaid(uint256 tokensSwapped);
    event TokensBurned(uint256 amount);
    event TaxUpdated(string taxType, uint256 taxAmount);
    event MaxHoldUpdated(uint256 maxHold);

    // Constants
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 1000 * 10**6 * 10**_decimals; // The total supply of tokens 1,000,000,000
    string private _symbol = "RYDER";
    string private _name = "The Last Ride";

    // Taxes

    // Buy fees in %
    uint256 private _liquidityFeeBuy = 1;
    uint256 private _marketingFeeBuy = 6;

    // Sell fees in %
    uint256 private _liquidityFeeSell = 2;
    uint256 private _marketingFeeSell = 6;
    uint256 private _burnFeeSell = 0;

    // Addresses and contracts
    address private _marketingWallet;
    address private _deadAddress = 0x000000000000000000000000000000000000dEaD;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    // Mappings
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromMaxHold;
    mapping (address => bool) private _isMarketMakerPair;
    mapping (address => bool) public isBlacklisted;

    // Limits
    uint256 private _maxHoldAmount = (_totalSupply * 3) / 100; // 3% of total supply
    uint256 private _numTokensSellToAddToLiquidity = _totalSupply / 100; // 1% of total supply
    uint256 private _maxGasPrice = 10000000000;

    // Tracking
    bool public swapAndLiquifyEnabled = true;
    uint256 private _tradingEnabledBlock;
    uint256 private _liquidityTokensPooled = 0;
    uint256 private _marketingTokensPooled = 0;
    bool private _tradingEnabled = false;

    constructor(address _uniswapV2RouterAddr, address marketingWallet) {

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

        _marketingWallet = marketingWallet;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddr);

         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        addMarketMakerPair(uniswapV2Pair);

        // Set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        // Exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        // Exclude functional accounts from max hold
        _isExcludedFromMaxHold[owner()] = true;
        _isExcludedFromMaxHold[address(this)] = true;
        _isExcludedFromMaxHold[address(0)] = true;
        _isExcludedFromMaxHold[_deadAddress] = true;

    }

    //to recieve BNB from uniswapV2Router when swaping
    receive() external payable {}

    /**
    * @dev Returns the bep token owner.
    */
    function getOwner() external view override returns (address) {
        return owner();
    }

    /**
    * @dev Returns the token decimals.
    */
    function decimals() external view override returns (uint8) {
        return _decimals;
    }

    /**
    * @dev Returns the token symbol.
    */
    function symbol() external view override returns (string memory) {
        return _symbol;
    }

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

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

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

    /**
     * @notice Enable trading and keep track of the block we enabled on
    */
    function enableTrading() external onlyOwner {
        _tradingEnabledBlock = block.number;
        _tradingEnabled = true;
    }

    /**
     * @notice Adds a market maker pair (these are used for deciding when to apply taxes)
     *
     * @param pair The pair to tax
     */
    function addMarketMakerPair(address pair) public onlyOwner {
        _isExcludedFromMaxHold[pair] = true;
        _isMarketMakerPair[pair] = true;
    }

    /**
     * @notice updates the burn tax on sells
     *
     * @param newBurnFeeSell The new fee
     */
    function updateBurnFeeSell(uint256 newBurnFeeSell) external onlyOwner {
        require(newBurnFeeSell < 10, 'updateBurnFeeSell(): Tax too high!');
        _burnFeeSell = newBurnFeeSell;
        emit TaxUpdated("burnFeeSell", newBurnFeeSell);
    }

    /**
     * @notice updates the marketing tax on sells
     *
     * @param newMarketingFeeSell The new fee
     */
    function updateMarketingFeeSell(uint256 newMarketingFeeSell) external onlyOwner {
        require(newMarketingFeeSell < 10, 'updateMarketingFeeSell(): Tax too high!');
        _marketingFeeSell = newMarketingFeeSell;
        emit TaxUpdated("marketingFeeSell", newMarketingFeeSell);
    }

    /**
     * @notice updates the liqduity tax on sells
     *
     * @param newLiquidityFeeSell The new fee
     */
    function updateLiquidityFeeSell(uint256 newLiquidityFeeSell) external onlyOwner {
        require(newLiquidityFeeSell < 10, 'updateLiquidityFeeSell(): Tax too high!');
        _liquidityFeeSell = newLiquidityFeeSell;
        emit TaxUpdated("liquidityFeeSell", newLiquidityFeeSell);
    }

    /**
     * @notice updates the liqduity tax on buys
     *
     * @param newLiquidityFeeBuy The new fee
     */
    function updateLiquidityFeeBuy(uint256 newLiquidityFeeBuy) external onlyOwner {
        require(newLiquidityFeeBuy < 10, 'updateLiquidityFeeBuy(): Tax too high!');
        _liquidityFeeBuy = newLiquidityFeeBuy;
        emit TaxUpdated("liquidityFeeBuy", newLiquidityFeeBuy);
    }

    /**
     * @notice updates the marketing tax on buys
     *
     * @param newMarketingFeeBuy The new fee
     */
    function updateMarketingFeeBuy(uint256 newMarketingFeeBuy) external onlyOwner {
        require(newMarketingFeeBuy < 10, 'updateMarketingFeeBuy(): Tax too high!');
        _marketingFeeBuy = newMarketingFeeBuy;
        emit TaxUpdated("marketingFeeBuy", newMarketingFeeBuy);
    }

    /**
     * @notice updates the max amount of tokens a wallet can hold
     *
     * @param newMaxHoldAmount The new max hold
     */
    function updateMaxHoldAmount(uint256 newMaxHoldAmount) external onlyOwner {
        require(newMaxHoldAmount > 0, 'updateMaxHoldAmount(): Max hold must be greater than 0!');
        _maxHoldAmount = newMaxHoldAmount;
        emit MaxHoldUpdated(newMaxHoldAmount);
    }

        /**
     * @notice Set whether or not an address is blacklisted
     *
     * @param addr The address to modify
     * @param _isBlacklisted Whether or not the address is blacklisted
     */
    function setIsBlacklisted(address addr, bool _isBlacklisted) external onlyOwner {
        isBlacklisted[addr] = _isBlacklisted;
    }

    /**
     * @notice Update the marketing wallet (in case of a breach)
     *
     * @param wallet The address of the new marketing wallet
     */
    function updateMarketingWallet(address wallet) external onlyOwner {
        _marketingWallet = wallet;
    }

    /**
     * @notice Exclude an account from the max hold restriction
     *
     * @param account The address of the account to exclude
     */
    function excludeFromMaxHold(address account) external onlyOwner {
        _isExcludedFromMaxHold[account] = true;
    }

    /**
     * @notice Exclude an address from transaction fees (Can only be executed by the contract owner)
     *
     * @param account the address of the account to exclude
     */
    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    /**
     * @notice Include an address in transaction fees (Can only be executed by the contract owner)
     *
     * @param account the address of the account to include
     */
    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    /**
     * @notice Toggle liquidity generation
     *
     * @param value A boolean representing if liquidity generation is enabled or not
     */
    function setSwapAndLiquifyEnabled(bool value) external onlyOwner {
        swapAndLiquifyEnabled = value;
        emit SwapAndLiquifyEnabledUpdated(value);
    }

    /**
     * @notice Update the maxmimum gas price a transaction can use without being blacklisted
     *
     * @param newMaxGasPrice the new gas limit in wei
     */
    function updateMaxGasPrice(uint256 newMaxGasPrice) external onlyOwner {
        require(newMaxGasPrice > 5000000000, 'updateMaxGasPrice(): Max gas price must be greater than 5000000000!');
        _maxGasPrice = newMaxGasPrice;
    }

    /**
     * @notice Calculate a percentage cut of an amount
     *
     * @param amount The amount of tokensSwapped
     * @param fee The fee in % i.e. 5% would be 5
     * @return The percentage amount of the tokens
     */
    function _calculateFee(uint256 amount, uint256 fee) internal pure returns (uint256) {
        return (amount * fee) / 100;
    }


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

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

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

    /**
    * @dev See {BEP20-transferFrom}.
    *
    * Emits an {Approval} event indicating the updated allowance. This is not
    * required by the EIP. See the note at the beginning of {BEP20};
    *
    * 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) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        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 {BEP20-approve}.
   *
   * Emits an {Approval} event indicating the updated allowance.
   *
   * Requirements:
   *
   * - `spender` cannot be the zero address.
    */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + 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 {BEP20-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 returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    /**
     * @notice Remove tokens from supply
     *
     * @param tokenAmount The amount of tokens to be burned
     */
    function burnTokens(uint256 tokenAmount) private {
        _totalSupply -= tokenAmount;
        emit TokensBurned(tokenAmount);
    }

    /**
     * @notice Sell tokens into BNB and send to a specified address
     *
     * @param tokenAmount The amount of chf to sell
     * @param to The address of the recipient
     */
    function _swapTokensForBNB(uint256 tokenAmount, address to) private {

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of BNB
            path,
            to,
            block.timestamp
        );

    }

    /**
     * @notice Add liquidity to the token on pancake swap
     *
     * @param tokenAmount The amount of chf to pair
     * @param BNBAmount The amount of BNB to pair
     */
    function _addLiquidity(uint256 tokenAmount, uint256 BNBAmount) private {

        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: BNBAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp
        );

    }

    /**
     * @notice Sell tokens into BNB and pair with APECROKEN for liquidity and pay marketing wallet
     *
     * @param tokenAmount the amount of stadnard tokens to be distributed
     */
    function _swapAndLiquify(uint256 tokenAmount) private lockTheSwap {

        uint256 liquidityCut = (_liquidityTokensPooled * tokenAmount) / (_liquidityTokensPooled + _marketingTokensPooled);
        if (liquidityCut > _liquidityTokensPooled) { liquidityCut = _liquidityTokensPooled; }

        uint256 marketingCut = tokenAmount - liquidityCut;
        if (marketingCut > _marketingTokensPooled) { marketingCut = _marketingTokensPooled; }

        // Update pools
        _liquidityTokensPooled -= liquidityCut;
        _marketingTokensPooled -= marketingCut;

        // split the contract balance into halves
        uint256 half = liquidityCut / 2;
        uint256 otherHalf = liquidityCut - half;

        // capture the contract's current BNB balance.
        // this is so that we can capture exactly the amount of BNB that the
        // swap creates, and not make the liquidity event include any BNB that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;
        // swap tokens for BNB for liquidity
        _swapTokensForBNB(half, address(this));
        // how much BNB did we just swap into?
        uint256 newBalance = address(this).balance - initialBalance;
        // add liquidity to uniswap
        _addLiquidity(otherHalf, newBalance);
        emit SwapAndLiquify(half, newBalance, otherHalf);

        // Send marketing share to the wallet
        _swapTokensForBNB(marketingCut, _marketingWallet);
        emit MarketingWalletPaid(marketingCut);

    }

    /**
    * @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 {
        require(_tradingEnabled || (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]), "Trading is disabled");
        require(sender != address(0), "BEP20: transfer from the zero address");
        require(recipient != address(0), "BEP20: transfer to the zero address");
        require(!isBlacklisted[sender] && !isBlacklisted[recipient], "_transfer(): transfer to/from blacklisted address");

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is uniswap pair.
        bool overMinTokenBalance = _balances[address(this)] >= _numTokensSellToAddToLiquidity;
        if (overMinTokenBalance && !inSwapAndLiquify && !_isMarketMakerPair[sender] && swapAndLiquifyEnabled) {
            // add liquidity
            _swapAndLiquify(_numTokensSellToAddToLiquidity);
        }

        // Take a fee if the account is not excluded from taxes and the transfer is to or from a market maker
        bool takeFee = (_isMarketMakerPair[sender] || _isMarketMakerPair[recipient])
            && !(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]);

        uint256 liquidityFee = 0;
        uint256 marketingFee = 0;
        uint256 burnFee = 0;
        uint256 totalTax = 0;

        if (takeFee) {

            // Blacklist obvious snipers
            if (
                ((tx.gasprice > _maxGasPrice && ((block.number - _tradingEnabledBlock) < 10))
                || block.number == _tradingEnabledBlock)
                && !_isExcludedFromMaxHold[recipient]
            ) {
                isBlacklisted[recipient] = true;
            }

            // Buy logic
            if (_isMarketMakerPair[sender]) {
                liquidityFee = _calculateFee(amount, _liquidityFeeBuy);
                marketingFee = _calculateFee(amount, _marketingFeeBuy);
            }

            // Sell logic
            if (_isMarketMakerPair[recipient]) {
                liquidityFee = _calculateFee(amount, _liquidityFeeSell);
                marketingFee = _calculateFee(amount, _marketingFeeSell);
                burnFee = _calculateFee(amount, _burnFeeSell);

                burnTokens(burnFee);
                emit Transfer(sender, address(0), burnFee);
            }

            emit Transfer(sender, address(this), liquidityFee + marketingFee);

            totalTax = liquidityFee + marketingFee + burnFee;

            _balances[address(this)] += totalTax;

        }

        // Individually track the amounts of tokens pooled for what purpose as these are variable
        _liquidityTokensPooled += liquidityFee;
        _marketingTokensPooled += marketingFee;

        require(!(
            !_isExcludedFromMaxHold[recipient]
            && _balances[recipient] + (amount - totalTax)  > _maxHoldAmount
        ), "_transfer(): Account balance over maximum hold!");

        _balances[sender] -= amount;
        _balances[recipient] += amount - totalTax;
        emit Transfer(sender, recipient, amount);
    }

    /**
    * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
    *
    * This is 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 {
        require(owner != address(0), "BEP20: approve from the zero address");
        require(spender != address(0), "BEP20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function withdrawToken (address tokenAddress) external onlyOwner {
    IBEP20 token = IBEP20(tokenAddress);
    uint256 balance = token.balanceOf(address(this));
    token.transfer(msg.sender, balance);
    
    }

    function manualETH(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(owner()).transfer(amountETH * amountPercentage / 100);
    }

 
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_uniswapV2RouterAddr","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"}],"name":"MarketingWalletPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxHold","type":"uint256"}],"name":"MaxHoldUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"BNBReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"taxType","type":"string"},{"indexed":false,"internalType":"uint256","name":"taxAmount","type":"uint256"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"addMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromMaxHold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"manualETH","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"_isBlacklisted","type":"bool"}],"name":"setIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBurnFeeSell","type":"uint256"}],"name":"updateBurnFeeSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityFeeBuy","type":"uint256"}],"name":"updateLiquidityFeeBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityFeeSell","type":"uint256"}],"name":"updateLiquidityFeeSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketingFeeBuy","type":"uint256"}],"name":"updateMarketingFeeBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketingFeeSell","type":"uint256"}],"name":"updateMarketingFeeSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxGasPrice","type":"uint256"}],"name":"updateMaxGasPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxHoldAmount","type":"uint256"}],"name":"updateMaxHoldAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000805461ffff60a01b1916600960a91b1790819055620000329060ff600160a81b90910416600a620006fd565b6200004290633b9aca00620007be565b60015560408051808201909152600580825264292ca222a960d91b6020909201918252620000739160029162000571565b5060408051808201909152600d8082526c546865204c617374205269646560981b6020909201918252620000aa9160039162000571565b506001600481905560066005819055600281556007556000600855600a80546001600160a01b03191661dead17905554606490620000ea906003620007be565b620000f6919062000691565b60125560646001546200010a919062000691565b6013556402540be4006014556015805460ff19908116600117909155600060178190556018556019805490911690553480156200014657600080fd5b5060405162002c9338038062002c93833981016040819052620001699162000659565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600154336000818152600c6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a380600960006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025b57600080fd5b505afa15801562000270573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000296919062000634565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002df57600080fd5b505afa158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a919062000634565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200036357600080fd5b505af115801562000378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039e919062000634565b600b80546001600160a01b0319166001600160a01b03929092169182179055620003c890620004d6565b6001600160601b0319606082901b166080526001600e6000620003f36000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600e909252812080549092166001908117909255600f906200044c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600f9093528183208054851660019081179091557ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec3758054861682179055600a549091168352912080549092161790555062000833915050565b6000546001600160a01b03163314620005355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b6001600160a01b03166000908152600f602090815260408083208054600160ff1991821681179092556010909352922080549091169091179055565b8280546200057f90620007e0565b90600052602060002090601f016020900481019282620005a35760008555620005ee565b82601f10620005be57805160ff1916838001178555620005ee565b82800160010185558215620005ee579182015b82811115620005ee578251825591602001919060010190620005d1565b50620005fc92915062000600565b5090565b5b80821115620005fc576000815560010162000601565b80516001600160a01b03811681146200062f57600080fd5b919050565b6000602082840312156200064757600080fd5b620006528262000617565b9392505050565b600080604083850312156200066d57600080fd5b620006788362000617565b9150620006886020840162000617565b90509250929050565b600082620006af57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620006f5578160001904821115620006d957620006d96200081d565b80851615620006e757918102915b93841c9390800290620006b9565b509250929050565b60006200065260ff8416836000826200071957506001620007b8565b816200072857506000620007b8565b81600181146200074157600281146200074c576200076c565b6001915050620007b8565b60ff8411156200076057620007606200081d565b50506001821b620007b8565b5060208310610133831016604e8410600b841016171562000791575081810a620007b8565b6200079d8383620006b4565b8060001904821115620007b457620007b46200081d565b0290505b92915050565b6000816000190483118215151615620007db57620007db6200081d565b500290565b600181811c90821680620007f557607f821691505b602082108114156200081757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c61241e620008756000396000818161028c01528181611dc001528181611e8801528181611ec401528181611f3f0152611f9b015261241e6000f3fe6080604052600436106102135760003560e01c8063893d20e811610118578063aacebbe3116100a0578063ea2f0b371161006f578063ea2f0b3714610646578063eed1414914610666578063f2fde38b14610686578063f37a4b1e146106a6578063fe575a87146106c657600080fd5b8063aacebbe3146105a0578063c49b9a80146105c0578063dd62ed3e146105e0578063dedaea5a1461062657600080fd5b806395d89b41116100e757806395d89b411461050b57806397bfcda314610520578063a0e3849214610540578063a457c2d714610560578063a9059cbb1461058057600080fd5b8063893d20e8146104b857806389476069146104d65780638a8c523c146104f65780638da5cb5b146104b857600080fd5b8063437823ec1161019b5780635d3d38901161016a5780635d3d38901461040d57806370a082311461042d578063715018a6146104635780637643f04114610478578063832fd2b31461049857600080fd5b8063437823ec1461039357806348146341146103b357806349bd5a5e146103d35780634a74bb02146103f357600080fd5b806323b872dd116101e257806323b872dd146102e55780632dfa88fc14610305578063313ce5671461032757806339509351146103535780633b7b6a101461037357600080fd5b806306fdde031461021f578063095ea7b31461024a5780631694505e1461027a57806318160ddd146102c657600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102346106f6565b60405161024191906121d0565b60405180910390f35b34801561025657600080fd5b5061026a61026536600461210a565b610788565b6040519015158152602001610241565b34801561028657600080fd5b506102ae7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610241565b3480156102d257600080fd5b506001545b604051908152602001610241565b3480156102f157600080fd5b5061026a61030036600461209b565b61079e565b34801561031157600080fd5b50610325610320366004612170565b6107f0565b005b34801561033357600080fd5b50600054600160a81b900460ff1660405160ff9091168152602001610241565b34801561035f57600080fd5b5061026a61036e36600461210a565b6108d5565b34801561037f57600080fd5b5061032561038e366004612170565b61090c565b34801561039f57600080fd5b506103256103ae366004612028565b6109e1565b3480156103bf57600080fd5b506103256103ce366004612170565b610a2f565b3480156103df57600080fd5b50600b546102ae906001600160a01b031681565b3480156103ff57600080fd5b5060155461026a9060ff1681565b34801561041957600080fd5b50610325610428366004612028565b610ae4565b34801561043957600080fd5b506102d7610448366004612028565b6001600160a01b03166000908152600c602052604090205490565b34801561046f57600080fd5b50610325610b4a565b34801561048457600080fd5b50610325610493366004612170565b610bbe565b3480156104a457600080fd5b506103256104b3366004612170565b610c8b565b3480156104c457600080fd5b506000546001600160a01b03166102ae565b3480156104e257600080fd5b506103256104f1366004612028565b610d60565b34801561050257600080fd5b50610325610e8f565b34801561051757600080fd5b50610234610ecc565b34801561052c57600080fd5b5061032561053b366004612170565b610edb565b34801561054c57600080fd5b5061032561055b3660046120dc565b610f67565b34801561056c57600080fd5b5061026a61057b36600461210a565b610fbc565b34801561058c57600080fd5b5061026a61059b36600461210a565b610ff3565b3480156105ac57600080fd5b506103256105bb366004612028565b611000565b3480156105cc57600080fd5b506103256105db366004612136565b61104c565b3480156105ec57600080fd5b506102d76105fb366004612062565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561063257600080fd5b50610325610641366004612170565b6110b7565b34801561065257600080fd5b50610325610661366004612028565b61118e565b34801561067257600080fd5b50610325610681366004612028565b6111d9565b34801561069257600080fd5b506103256106a1366004612028565b611227565b3480156106b257600080fd5b506103256106c1366004612170565b611311565b3480156106d257600080fd5b5061026a6106e1366004612028565b60116020526000908152604090205460ff1681565b6060600380546107059061233b565b80601f01602080910402602001604051908101604052809291908181526020018280546107319061233b565b801561077e5780601f106107535761010080835404028352916020019161077e565b820191906000526020600020905b81548152906001019060200180831161076157829003601f168201915b5050505050905090565b60006107953384846113e8565b50600192915050565b60006107ab84848461150c565b6001600160a01b0384166000908152600d60209081526040808320338085529252909120546107e69186916107e1908690612324565b6113e8565b5060019392505050565b6000546001600160a01b031633146108235760405162461bcd60e51b815260040161081a90612225565b60405180910390fd5b600a81106108825760405162461bcd60e51b815260206004820152602660248201527f7570646174654d61726b6574696e6746656542757928293a2054617820746f6f60448201526520686967682160d01b606482015260840161081a565b600581905560408051818152600f918101919091526e6d61726b6574696e6746656542757960881b6060820152602081018290526000805160206123c9833981519152906080015b60405180910390a150565b336000818152600d602090815260408083206001600160a01b038716845290915281205490916107959185906107e19086906122cb565b6000546001600160a01b031633146109365760405162461bcd60e51b815260040161081a90612225565b600081116109ac5760405162461bcd60e51b815260206004820152603760248201527f7570646174654d6178486f6c64416d6f756e7428293a204d617820686f6c642060448201527f6d7573742062652067726561746572207468616e203021000000000000000000606482015260840161081a565b60128190556040518181527fb938e6d082e2eee111310a971b2dfd6849b6f32ac1881546f677c514ee0d521f906020016108ca565b6000546001600160a01b03163314610a0b5760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b03163314610a595760405162461bcd60e51b815260040161081a90612225565b64012a05f2008111610adf5760405162461bcd60e51b815260206004820152604360248201527f7570646174654d6178476173507269636528293a204d6178206761732070726960448201527f6365206d7573742062652067726561746572207468616e20353030303030303060648201526230302160e81b608482015260a40161081a565b601455565b6000546001600160a01b03163314610b0e5760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03166000908152600f602090815260408083208054600160ff1991821681179092556010909352922080549091169091179055565b6000546001600160a01b03163314610b745760405162461bcd60e51b815260040161081a90612225565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610be85760405162461bcd60e51b815260040161081a90612225565b600a8110610c435760405162461bcd60e51b815260206004820152602260248201527f7570646174654275726e46656553656c6c28293a2054617820746f6f20686967604482015261682160f01b606482015260840161081a565b600881905560408051818152600b918101919091526a189d5c9b91995954d95b1b60aa1b6060820152602081018290526000805160206123c9833981519152906080016108ca565b6000546001600160a01b03163314610cb55760405162461bcd60e51b815260040161081a90612225565b600a8110610d145760405162461bcd60e51b815260206004820152602660248201527f7570646174654c697175696469747946656542757928293a2054617820746f6f60448201526520686967682160d01b606482015260840161081a565b600481905560408051818152600f918101919091526e6c697175696469747946656542757960881b6060820152602081018290526000805160206123c9833981519152906080016108ca565b6000546001600160a01b03163314610d8a5760405162461bcd60e51b815260040161081a90612225565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b158015610dce57600080fd5b505afa158015610de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e069190612189565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb90604401602060405180830381600087803b158015610e5157600080fd5b505af1158015610e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e899190612153565b50505050565b6000546001600160a01b03163314610eb95760405162461bcd60e51b815260040161081a90612225565b436016556019805460ff19166001179055565b6060600280546107059061233b565b6000546001600160a01b03163314610f055760405162461bcd60e51b815260040161081a90612225565b47610f186000546001600160a01b031690565b6001600160a01b03166108fc6064610f308585612305565b610f3a91906122e3565b6040518115909202916000818181858888f19350505050158015610f62573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610f915760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b336000818152600d602090815260408083206001600160a01b038716845290915281205490916107959185906107e1908690612324565b600061079533848461150c565b6000546001600160a01b0316331461102a5760405162461bcd60e51b815260040161081a90612225565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110765760405162461bcd60e51b815260040161081a90612225565b6015805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906020016108ca565b6000546001600160a01b031633146110e15760405162461bcd60e51b815260040161081a90612225565b600a81106111415760405162461bcd60e51b815260206004820152602760248201527f7570646174654c697175696469747946656553656c6c28293a2054617820746f6044820152666f20686967682160c81b606482015260840161081a565b6006819055604080518181526010918101919091526f1b1a5c5d5a591a5d1e51995954d95b1b60821b6060820152602081018290526000805160206123c9833981519152906080016108ca565b6000546001600160a01b031633146111b85760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b031633146112035760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000546001600160a01b031633146112515760405162461bcd60e51b815260040161081a90612225565b6001600160a01b0381166112b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461133b5760405162461bcd60e51b815260040161081a90612225565b600a811061139b5760405162461bcd60e51b815260206004820152602760248201527f7570646174654d61726b6574696e6746656553656c6c28293a2054617820746f6044820152666f20686967682160c81b606482015260840161081a565b6007819055604080518181526010918101919091526f1b585c9ad95d1a5b99d1995954d95b1b60821b6060820152602081018290526000805160206123c9833981519152906080016108ca565b6001600160a01b03831661144a5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161081a565b6001600160a01b0382166114ab5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161081a565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60195460ff168061155757506001600160a01b0383166000908152600e602052604090205460ff168061155757506001600160a01b0382166000908152600e602052604090205460ff165b6115995760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015260640161081a565b6001600160a01b0383166115fd5760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161081a565b6001600160a01b03821661165f5760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161081a565b6001600160a01b03831660009081526011602052604090205460ff161580156116a157506001600160a01b03821660009081526011602052604090205460ff16155b6117075760405162461bcd60e51b815260206004820152603160248201527f5f7472616e7366657228293a207472616e7366657220746f2f66726f6d20626c60448201527061636b6c6973746564206164647265737360781b606482015260840161081a565b601354306000908152600c60205260409020541080159081906117345750600054600160a01b900460ff16155b801561175957506001600160a01b03841660009081526010602052604090205460ff16155b8015611767575060155460ff165b1561177757611777601354611b88565b6001600160a01b03841660009081526010602052604081205460ff16806117b657506001600160a01b03841660009081526010602052604090205460ff165b80156117fe57506001600160a01b0385166000908152600e602052604090205460ff16806117fc57506001600160a01b0384166000908152600e602052604090205460ff165b155b905060008060008084156119de576014543a11801561182a5750600a601654436118289190612324565b105b80611836575060165443145b801561185b57506001600160a01b0388166000908152600f602052604090205460ff16155b15611884576001600160a01b0388166000908152601160205260409020805460ff191660011790555b6001600160a01b03891660009081526010602052604090205460ff16156118c2576118b187600454611d03565b93506118bf87600554611d03565b92505b6001600160a01b03881660009081526010602052604090205460ff1615611958576118ef87600654611d03565b93506118fd87600754611d03565b925061190b87600854611d03565b915061191682611d22565b6040518281526000906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b306001600160a01b038a167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61198e86886122cb565b60405190815260200160405180910390a3816119aa84866122cb565b6119b491906122cb565b306000908152600c60205260408120805492935083929091906119d89084906122cb565b90915550505b83601760008282546119f091906122cb565b925050819055508260186000828254611a0991906122cb565b90915550506001600160a01b0388166000908152600f602052604090205460ff16158015611a645750601254611a3f8289612324565b6001600160a01b038a166000908152600c6020526040902054611a6291906122cb565b115b15611ac95760405162461bcd60e51b815260206004820152602f60248201527f5f7472616e7366657228293a204163636f756e742062616c616e6365206f766560448201526e72206d6178696d756d20686f6c642160881b606482015260840161081a565b6001600160a01b0389166000908152600c602052604081208054899290611af1908490612324565b90915550611b0190508188612324565b6001600160a01b0389166000908152600c602052604081208054909190611b299084906122cb565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef89604051611b7591815260200190565b60405180910390a3505050505050505050565b6000805460ff60a01b1916600160a01b178155601854601754611bab91906122cb565b82601754611bb99190612305565b611bc391906122e3565b9050601754811115611bd457506017545b6000611be08284612324565b9050601854811115611bf157506018545b8160176000828254611c039190612324565b925050819055508060186000828254611c1c9190612324565b9091555060009050611c2f6002846122e3565b90506000611c3d8285612324565b905047611c4a8330611d69565b6000611c568247612324565b9050611c628382611f39565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1600954611cba9086906001600160a01b0316611d69565b6040518581527f0c261fcfbe2cecb044d51c379f048c337c0bf60643105b4508ebfdeac09061b99060200160405180910390a150506000805460ff60a01b191690555050505050565b60006064611d118385612305565b611d1b91906122e3565b9392505050565b8060016000828254611d349190612324565b90915550506040518181527f6ef4855b666dcc7884561072e4358b28dfe01feb1b7f4dcebc00e62d50394ac7906020016108ca565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d9e57611d9e61238c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1757600080fd5b505afa158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f9190612045565b81600181518110611e6257611e6261238c565b60200260200101906001600160a01b031690816001600160a01b031681525050611ead307f0000000000000000000000000000000000000000000000000000000000000000856113e8565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611f0290869060009086908890429060040161225a565b600060405180830381600087803b158015611f1c57600080fd5b505af1158015611f30573d6000803e3d6000fd5b50505050505050565b611f64307f0000000000000000000000000000000000000000000000000000000000000000846113e8565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c4016060604051808303818588803b158015611fe857600080fd5b505af1158015611ffc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061202191906121a2565b5050505050565b60006020828403121561203a57600080fd5b8135611d1b816123a2565b60006020828403121561205757600080fd5b8151611d1b816123a2565b6000806040838503121561207557600080fd5b8235612080816123a2565b91506020830135612090816123a2565b809150509250929050565b6000806000606084860312156120b057600080fd5b83356120bb816123a2565b925060208401356120cb816123a2565b929592945050506040919091013590565b600080604083850312156120ef57600080fd5b82356120fa816123a2565b91506020830135612090816123ba565b6000806040838503121561211d57600080fd5b8235612128816123a2565b946020939093013593505050565b60006020828403121561214857600080fd5b8135611d1b816123ba565b60006020828403121561216557600080fd5b8151611d1b816123ba565b60006020828403121561218257600080fd5b5035919050565b60006020828403121561219b57600080fd5b5051919050565b6000806000606084860312156121b757600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156121fd578581018301518582016040015282016121e1565b8181111561220f576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122aa5784516001600160a01b031683529383019391830191600101612285565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156122de576122de612376565b500190565b60008261230057634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561231f5761231f612376565b500290565b60008282101561233657612336612376565b500390565b600181811c9082168061234f57607f821691505b6020821081141561237057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146123b757600080fd5b50565b80151581146123b757600080fdfe152025149960395a45119ccb22f7198ae8472a2bf6d8f534661c7f3f5674b76ca2646970667358221220f735a4d962fab40ac10ee15f0a3fe5e976772d911aa0f50f2657857387f71f5664736f6c634300080700330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d7d70f16dbde66b53b3bdfeb7093e9177426bb04

Deployed Bytecode

0x6080604052600436106102135760003560e01c8063893d20e811610118578063aacebbe3116100a0578063ea2f0b371161006f578063ea2f0b3714610646578063eed1414914610666578063f2fde38b14610686578063f37a4b1e146106a6578063fe575a87146106c657600080fd5b8063aacebbe3146105a0578063c49b9a80146105c0578063dd62ed3e146105e0578063dedaea5a1461062657600080fd5b806395d89b41116100e757806395d89b411461050b57806397bfcda314610520578063a0e3849214610540578063a457c2d714610560578063a9059cbb1461058057600080fd5b8063893d20e8146104b857806389476069146104d65780638a8c523c146104f65780638da5cb5b146104b857600080fd5b8063437823ec1161019b5780635d3d38901161016a5780635d3d38901461040d57806370a082311461042d578063715018a6146104635780637643f04114610478578063832fd2b31461049857600080fd5b8063437823ec1461039357806348146341146103b357806349bd5a5e146103d35780634a74bb02146103f357600080fd5b806323b872dd116101e257806323b872dd146102e55780632dfa88fc14610305578063313ce5671461032757806339509351146103535780633b7b6a101461037357600080fd5b806306fdde031461021f578063095ea7b31461024a5780631694505e1461027a57806318160ddd146102c657600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102346106f6565b60405161024191906121d0565b60405180910390f35b34801561025657600080fd5b5061026a61026536600461210a565b610788565b6040519015158152602001610241565b34801561028657600080fd5b506102ae7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610241565b3480156102d257600080fd5b506001545b604051908152602001610241565b3480156102f157600080fd5b5061026a61030036600461209b565b61079e565b34801561031157600080fd5b50610325610320366004612170565b6107f0565b005b34801561033357600080fd5b50600054600160a81b900460ff1660405160ff9091168152602001610241565b34801561035f57600080fd5b5061026a61036e36600461210a565b6108d5565b34801561037f57600080fd5b5061032561038e366004612170565b61090c565b34801561039f57600080fd5b506103256103ae366004612028565b6109e1565b3480156103bf57600080fd5b506103256103ce366004612170565b610a2f565b3480156103df57600080fd5b50600b546102ae906001600160a01b031681565b3480156103ff57600080fd5b5060155461026a9060ff1681565b34801561041957600080fd5b50610325610428366004612028565b610ae4565b34801561043957600080fd5b506102d7610448366004612028565b6001600160a01b03166000908152600c602052604090205490565b34801561046f57600080fd5b50610325610b4a565b34801561048457600080fd5b50610325610493366004612170565b610bbe565b3480156104a457600080fd5b506103256104b3366004612170565b610c8b565b3480156104c457600080fd5b506000546001600160a01b03166102ae565b3480156104e257600080fd5b506103256104f1366004612028565b610d60565b34801561050257600080fd5b50610325610e8f565b34801561051757600080fd5b50610234610ecc565b34801561052c57600080fd5b5061032561053b366004612170565b610edb565b34801561054c57600080fd5b5061032561055b3660046120dc565b610f67565b34801561056c57600080fd5b5061026a61057b36600461210a565b610fbc565b34801561058c57600080fd5b5061026a61059b36600461210a565b610ff3565b3480156105ac57600080fd5b506103256105bb366004612028565b611000565b3480156105cc57600080fd5b506103256105db366004612136565b61104c565b3480156105ec57600080fd5b506102d76105fb366004612062565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561063257600080fd5b50610325610641366004612170565b6110b7565b34801561065257600080fd5b50610325610661366004612028565b61118e565b34801561067257600080fd5b50610325610681366004612028565b6111d9565b34801561069257600080fd5b506103256106a1366004612028565b611227565b3480156106b257600080fd5b506103256106c1366004612170565b611311565b3480156106d257600080fd5b5061026a6106e1366004612028565b60116020526000908152604090205460ff1681565b6060600380546107059061233b565b80601f01602080910402602001604051908101604052809291908181526020018280546107319061233b565b801561077e5780601f106107535761010080835404028352916020019161077e565b820191906000526020600020905b81548152906001019060200180831161076157829003601f168201915b5050505050905090565b60006107953384846113e8565b50600192915050565b60006107ab84848461150c565b6001600160a01b0384166000908152600d60209081526040808320338085529252909120546107e69186916107e1908690612324565b6113e8565b5060019392505050565b6000546001600160a01b031633146108235760405162461bcd60e51b815260040161081a90612225565b60405180910390fd5b600a81106108825760405162461bcd60e51b815260206004820152602660248201527f7570646174654d61726b6574696e6746656542757928293a2054617820746f6f60448201526520686967682160d01b606482015260840161081a565b600581905560408051818152600f918101919091526e6d61726b6574696e6746656542757960881b6060820152602081018290526000805160206123c9833981519152906080015b60405180910390a150565b336000818152600d602090815260408083206001600160a01b038716845290915281205490916107959185906107e19086906122cb565b6000546001600160a01b031633146109365760405162461bcd60e51b815260040161081a90612225565b600081116109ac5760405162461bcd60e51b815260206004820152603760248201527f7570646174654d6178486f6c64416d6f756e7428293a204d617820686f6c642060448201527f6d7573742062652067726561746572207468616e203021000000000000000000606482015260840161081a565b60128190556040518181527fb938e6d082e2eee111310a971b2dfd6849b6f32ac1881546f677c514ee0d521f906020016108ca565b6000546001600160a01b03163314610a0b5760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b03163314610a595760405162461bcd60e51b815260040161081a90612225565b64012a05f2008111610adf5760405162461bcd60e51b815260206004820152604360248201527f7570646174654d6178476173507269636528293a204d6178206761732070726960448201527f6365206d7573742062652067726561746572207468616e20353030303030303060648201526230302160e81b608482015260a40161081a565b601455565b6000546001600160a01b03163314610b0e5760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03166000908152600f602090815260408083208054600160ff1991821681179092556010909352922080549091169091179055565b6000546001600160a01b03163314610b745760405162461bcd60e51b815260040161081a90612225565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610be85760405162461bcd60e51b815260040161081a90612225565b600a8110610c435760405162461bcd60e51b815260206004820152602260248201527f7570646174654275726e46656553656c6c28293a2054617820746f6f20686967604482015261682160f01b606482015260840161081a565b600881905560408051818152600b918101919091526a189d5c9b91995954d95b1b60aa1b6060820152602081018290526000805160206123c9833981519152906080016108ca565b6000546001600160a01b03163314610cb55760405162461bcd60e51b815260040161081a90612225565b600a8110610d145760405162461bcd60e51b815260206004820152602660248201527f7570646174654c697175696469747946656542757928293a2054617820746f6f60448201526520686967682160d01b606482015260840161081a565b600481905560408051818152600f918101919091526e6c697175696469747946656542757960881b6060820152602081018290526000805160206123c9833981519152906080016108ca565b6000546001600160a01b03163314610d8a5760405162461bcd60e51b815260040161081a90612225565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b158015610dce57600080fd5b505afa158015610de2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e069190612189565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb90604401602060405180830381600087803b158015610e5157600080fd5b505af1158015610e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e899190612153565b50505050565b6000546001600160a01b03163314610eb95760405162461bcd60e51b815260040161081a90612225565b436016556019805460ff19166001179055565b6060600280546107059061233b565b6000546001600160a01b03163314610f055760405162461bcd60e51b815260040161081a90612225565b47610f186000546001600160a01b031690565b6001600160a01b03166108fc6064610f308585612305565b610f3a91906122e3565b6040518115909202916000818181858888f19350505050158015610f62573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610f915760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b336000818152600d602090815260408083206001600160a01b038716845290915281205490916107959185906107e1908690612324565b600061079533848461150c565b6000546001600160a01b0316331461102a5760405162461bcd60e51b815260040161081a90612225565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110765760405162461bcd60e51b815260040161081a90612225565b6015805460ff19168215159081179091556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906020016108ca565b6000546001600160a01b031633146110e15760405162461bcd60e51b815260040161081a90612225565b600a81106111415760405162461bcd60e51b815260206004820152602760248201527f7570646174654c697175696469747946656553656c6c28293a2054617820746f6044820152666f20686967682160c81b606482015260840161081a565b6006819055604080518181526010918101919091526f1b1a5c5d5a591a5d1e51995954d95b1b60821b6060820152602081018290526000805160206123c9833981519152906080016108ca565b6000546001600160a01b031633146111b85760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b031633146112035760405162461bcd60e51b815260040161081a90612225565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b6000546001600160a01b031633146112515760405162461bcd60e51b815260040161081a90612225565b6001600160a01b0381166112b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161081a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461133b5760405162461bcd60e51b815260040161081a90612225565b600a811061139b5760405162461bcd60e51b815260206004820152602760248201527f7570646174654d61726b6574696e6746656553656c6c28293a2054617820746f6044820152666f20686967682160c81b606482015260840161081a565b6007819055604080518181526010918101919091526f1b585c9ad95d1a5b99d1995954d95b1b60821b6060820152602081018290526000805160206123c9833981519152906080016108ca565b6001600160a01b03831661144a5760405162461bcd60e51b8152602060048201526024808201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161081a565b6001600160a01b0382166114ab5760405162461bcd60e51b815260206004820152602260248201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161081a565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60195460ff168061155757506001600160a01b0383166000908152600e602052604090205460ff168061155757506001600160a01b0382166000908152600e602052604090205460ff165b6115995760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015260640161081a565b6001600160a01b0383166115fd5760405162461bcd60e51b815260206004820152602560248201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161081a565b6001600160a01b03821661165f5760405162461bcd60e51b815260206004820152602360248201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161081a565b6001600160a01b03831660009081526011602052604090205460ff161580156116a157506001600160a01b03821660009081526011602052604090205460ff16155b6117075760405162461bcd60e51b815260206004820152603160248201527f5f7472616e7366657228293a207472616e7366657220746f2f66726f6d20626c60448201527061636b6c6973746564206164647265737360781b606482015260840161081a565b601354306000908152600c60205260409020541080159081906117345750600054600160a01b900460ff16155b801561175957506001600160a01b03841660009081526010602052604090205460ff16155b8015611767575060155460ff165b1561177757611777601354611b88565b6001600160a01b03841660009081526010602052604081205460ff16806117b657506001600160a01b03841660009081526010602052604090205460ff165b80156117fe57506001600160a01b0385166000908152600e602052604090205460ff16806117fc57506001600160a01b0384166000908152600e602052604090205460ff165b155b905060008060008084156119de576014543a11801561182a5750600a601654436118289190612324565b105b80611836575060165443145b801561185b57506001600160a01b0388166000908152600f602052604090205460ff16155b15611884576001600160a01b0388166000908152601160205260409020805460ff191660011790555b6001600160a01b03891660009081526010602052604090205460ff16156118c2576118b187600454611d03565b93506118bf87600554611d03565b92505b6001600160a01b03881660009081526010602052604090205460ff1615611958576118ef87600654611d03565b93506118fd87600754611d03565b925061190b87600854611d03565b915061191682611d22565b6040518281526000906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b306001600160a01b038a167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61198e86886122cb565b60405190815260200160405180910390a3816119aa84866122cb565b6119b491906122cb565b306000908152600c60205260408120805492935083929091906119d89084906122cb565b90915550505b83601760008282546119f091906122cb565b925050819055508260186000828254611a0991906122cb565b90915550506001600160a01b0388166000908152600f602052604090205460ff16158015611a645750601254611a3f8289612324565b6001600160a01b038a166000908152600c6020526040902054611a6291906122cb565b115b15611ac95760405162461bcd60e51b815260206004820152602f60248201527f5f7472616e7366657228293a204163636f756e742062616c616e6365206f766560448201526e72206d6178696d756d20686f6c642160881b606482015260840161081a565b6001600160a01b0389166000908152600c602052604081208054899290611af1908490612324565b90915550611b0190508188612324565b6001600160a01b0389166000908152600c602052604081208054909190611b299084906122cb565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef89604051611b7591815260200190565b60405180910390a3505050505050505050565b6000805460ff60a01b1916600160a01b178155601854601754611bab91906122cb565b82601754611bb99190612305565b611bc391906122e3565b9050601754811115611bd457506017545b6000611be08284612324565b9050601854811115611bf157506018545b8160176000828254611c039190612324565b925050819055508060186000828254611c1c9190612324565b9091555060009050611c2f6002846122e3565b90506000611c3d8285612324565b905047611c4a8330611d69565b6000611c568247612324565b9050611c628382611f39565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1600954611cba9086906001600160a01b0316611d69565b6040518581527f0c261fcfbe2cecb044d51c379f048c337c0bf60643105b4508ebfdeac09061b99060200160405180910390a150506000805460ff60a01b191690555050505050565b60006064611d118385612305565b611d1b91906122e3565b9392505050565b8060016000828254611d349190612324565b90915550506040518181527f6ef4855b666dcc7884561072e4358b28dfe01feb1b7f4dcebc00e62d50394ac7906020016108ca565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d9e57611d9e61238c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1757600080fd5b505afa158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f9190612045565b81600181518110611e6257611e6261238c565b60200260200101906001600160a01b031690816001600160a01b031681525050611ead307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d856113e8565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611f0290869060009086908890429060040161225a565b600060405180830381600087803b158015611f1c57600080fd5b505af1158015611f30573d6000803e3d6000fd5b50505050505050565b611f64307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846113e8565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c4016060604051808303818588803b158015611fe857600080fd5b505af1158015611ffc573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061202191906121a2565b5050505050565b60006020828403121561203a57600080fd5b8135611d1b816123a2565b60006020828403121561205757600080fd5b8151611d1b816123a2565b6000806040838503121561207557600080fd5b8235612080816123a2565b91506020830135612090816123a2565b809150509250929050565b6000806000606084860312156120b057600080fd5b83356120bb816123a2565b925060208401356120cb816123a2565b929592945050506040919091013590565b600080604083850312156120ef57600080fd5b82356120fa816123a2565b91506020830135612090816123ba565b6000806040838503121561211d57600080fd5b8235612128816123a2565b946020939093013593505050565b60006020828403121561214857600080fd5b8135611d1b816123ba565b60006020828403121561216557600080fd5b8151611d1b816123ba565b60006020828403121561218257600080fd5b5035919050565b60006020828403121561219b57600080fd5b5051919050565b6000806000606084860312156121b757600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156121fd578581018301518582016040015282016121e1565b8181111561220f576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122aa5784516001600160a01b031683529383019391830191600101612285565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156122de576122de612376565b500190565b60008261230057634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561231f5761231f612376565b500290565b60008282101561233657612336612376565b500390565b600181811c9082168061234f57607f821691505b6020821081141561237057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146123b757600080fd5b50565b80151581146123b757600080fdfe152025149960395a45119ccb22f7198ae8472a2bf6d8f534661c7f3f5674b76ca2646970667358221220f735a4d962fab40ac10ee15f0a3fe5e976772d911aa0f50f2657857387f71f5664736f6c63430008070033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d7d70f16dbde66b53b3bdfeb7093e9177426bb04

-----Decoded View---------------
Arg [0] : _uniswapV2RouterAddr (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : marketingWallet (address): 0xd7D70F16dbDE66b53b3BdFeB7093E9177426bb04

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


Deployed Bytecode Sourcemap

21724:21564:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25749:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32563:163;;;;;;;;;;-1:-1:-1;32563:163:0;;;;;:::i;:::-;;:::i;:::-;;;4528:14:1;;4521:22;4503:41;;4491:2;4476:18;32563:163:0;4363:187:1;23062:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3428:32:1;;;3410:51;;3398:2;3383:18;23062:51:0;3264:203:1;25905:102:0;;;;;;;;;;-1:-1:-1;25987:12:0;;25905:102;;;14127:25:1;;;14115:2;14100:18;25905:102:0;13981:177:1;33186:268:0;;;;;;;;;;-1:-1:-1;33186:268:0;;;;;:::i;:::-;;:::i;28497:284::-;;;;;;;;;;-1:-1:-1;28497:284:0;;;;;:::i;:::-;;:::i;:::-;;25433:94;;;;;;;;;;-1:-1:-1;25485:5:0;25510:9;-1:-1:-1;;;25510:9:0;;;;25433:94;;15644:4:1;15632:17;;;15614:36;;15602:2;15587:18;25433:94:0;15472:184:1;33841:207:0;;;;;;;;;;-1:-1:-1;33841:207:0;;;;;:::i;:::-;;:::i;28931:273::-;;;;;;;;;;-1:-1:-1;28931:273:0;;;;;:::i;:::-;;:::i;30302:113::-;;;;;;;;;;-1:-1:-1;30302:113:0;;;;;:::i;:::-;;:::i;31233:236::-;;;;;;;;;;-1:-1:-1;31233:236:0;;;;;:::i;:::-;;:::i;23120:28::-;;;;;;;;;;-1:-1:-1;23120:28:0;;;;-1:-1:-1;;;;;23120:28:0;;;23804:40;;;;;;;;;;-1:-1:-1;23804:40:0;;;;;;;;26578:155;;;;;;;;;;-1:-1:-1;26578:155:0;;;;;:::i;:::-;;:::i;26067:121::-;;;;;;;;;;-1:-1:-1;26067:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;26162:18:0;26135:7;26162:18;;;:9;:18;;;;;;;26067:121;5334:148;;;;;;;;;;;;;:::i;26855:252::-;;;;;;;;;;-1:-1:-1;26855:252:0;;;;;:::i;:::-;;:::i;28083:284::-;;;;;;;;;;-1:-1:-1;28083:284:0;;;;;:::i;:::-;;:::i;25274:94::-;;;;;;;;;;-1:-1:-1;25326:7:0;4756:6;-1:-1:-1;;;;;4756:6:0;25274:94;;42858:218;;;;;;;;;;-1:-1:-1;42858:218:0;;;;;:::i;:::-;;:::i;26286:131::-;;;;;;;;;;;;;:::i;25590:98::-;;;;;;;;;;;;;:::i;43084:196::-;;;;;;;;;;-1:-1:-1;43084:196:0;;;;;:::i;:::-;;:::i;29417:135::-;;;;;;;;;;-1:-1:-1;29417:135:0;;;;;:::i;:::-;;:::i;34537:217::-;;;;;;;;;;-1:-1:-1;34537:217:0;;;;;:::i;:::-;;:::i;32049:169::-;;;;;;;;;;-1:-1:-1;32049:169:0;;;;;:::i;:::-;;:::i;29714:110::-;;;;;;;;;;-1:-1:-1;29714:110:0;;;;;:::i;:::-;;:::i;30886:164::-;;;;;;;;;;-1:-1:-1;30886:164:0;;;;;:::i;:::-;;:::i;32278:145::-;;;;;;;;;;-1:-1:-1;32278:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;32388:18:0;;;32361:7;32388:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;32278:145;27662:292;;;;;;;;;;-1:-1:-1;27662:292:0;;;;;:::i;:::-;;:::i;30610:112::-;;;;;;;;;;-1:-1:-1;30610:112:0;;;;;:::i;:::-;;:::i;29984:121::-;;;;;;;;;;-1:-1:-1;29984:121:0;;;;;:::i;:::-;;:::i;5637:244::-;;;;;;;;;;-1:-1:-1;5637:244:0;;;;;:::i;:::-;;:::i;27239:292::-;;;;;;;;;;-1:-1:-1;27239:292:0;;;;;:::i;:::-;;:::i;23484:46::-;;;;;;;;;;-1:-1:-1;23484:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25749:94;25797:13;25830:5;25823:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25749:94;:::o;32563:163::-;32640:4;32657:39;3405:10;32680:7;32689:6;32657:8;:39::i;:::-;-1:-1:-1;32714:4:0;32563:163;;;;:::o;33186:268::-;33286:4;33303:36;33313:6;33321:9;33332:6;33303:9;:36::i;:::-;-1:-1:-1;;;;;33381:19:0;;;;;;:11;:19;;;;;;;;3405:10;33381:33;;;;;;;;;33350:74;;33359:6;;33381:42;;33417:6;;33381:42;:::i;:::-;33350:8;:74::i;:::-;-1:-1:-1;33442:4:0;33186:268;;;;;:::o;28497:284::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;;;;;;;;;28615:2:::1;28594:18;:23;28586:74;;;::::0;-1:-1:-1;;;28586:74:0;;9715:2:1;28586:74:0::1;::::0;::::1;9697:21:1::0;9754:2;9734:18;;;9727:30;9793:34;9773:18;;;9766:62;-1:-1:-1;;;9844:18:1;;;9837:36;9890:19;;28586:74:0::1;9513:402:1::0;28586:74:0::1;28671:16;:37:::0;;;28724:49:::1;::::0;;8056:21:1;;;8113:2;8093:18;;;8086:30;;;;-1:-1:-1;;;8147:2:1;8132:18;;8125:45;8237:4;8222:20;;8215:36;;;-1:-1:-1;;;;;;;;;;;28724:49:0;8202:3:1;8187:19;28724:49:0::1;;;;;;;;28497:284:::0;:::o;33841:207::-;3405:10;33921:4;33970:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;33970:34:0;;;;;;;;;;33921:4;;33938:80;;33961:7;;33970:47;;34007:10;;33970:47;:::i;28931:273::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;29043:1:::1;29024:16;:20;29016:88;;;::::0;-1:-1:-1;;;29016:88:0;;8872:2:1;29016:88:0::1;::::0;::::1;8854:21:1::0;8911:2;8891:18;;;8884:30;8950:34;8930:18;;;8923:62;9021:25;9001:18;;;8994:53;9064:19;;29016:88:0::1;8670:419:1::0;29016:88:0::1;29115:14;:33:::0;;;29164:32:::1;::::0;14127:25:1;;;29164:32:0::1;::::0;14115:2:1;14100:18;29164:32:0::1;13981:177:1::0;30302:113:0;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30373:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;30373:34:0::1;30403:4;30373:34;::::0;;30302:113::o;31233:236::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;31339:10:::1;31322:14;:27;31314:107;;;::::0;-1:-1:-1;;;31314:107:0;;12886:2:1;31314:107:0::1;::::0;::::1;12868:21:1::0;12925:2;12905:18;;;12898:30;12964:34;12944:18;;;12937:62;13035:34;13015:18;;;13008:62;-1:-1:-1;;;13086:19:1;;;13079:34;13130:19;;31314:107:0::1;12684:471:1::0;31314:107:0::1;31432:12;:29:::0;31233:236::o;26578:155::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26648:28:0::1;;::::0;;;:22:::1;:28;::::0;;;;;;;:35;;26679:4:::1;-1:-1:-1::0;;26648:35:0;;::::1;::::0;::::1;::::0;;;26694:18:::1;:24:::0;;;;;:31;;;;::::1;::::0;;::::1;::::0;;26578:155::o;5334:148::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;5441:1:::1;5425:6:::0;;5404:40:::1;::::0;-1:-1:-1;;;;;5425:6:0;;::::1;::::0;5404:40:::1;::::0;5441:1;;5404:40:::1;5472:1;5455:19:::0;;-1:-1:-1;;;;;;5455:19:0::1;::::0;;5334:148::o;26855:252::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;26961:2:::1;26944:14;:19;26936:66;;;::::0;-1:-1:-1;;;26936:66:0;;12483:2:1;26936:66:0::1;::::0;::::1;12465:21:1::0;12522:2;12502:18;;;12495:30;12561:34;12541:18;;;12534:62;-1:-1:-1;;;12612:18:1;;;12605:32;12654:19;;26936:66:0::1;12281:398:1::0;26936:66:0::1;27013:12;:29:::0;;;27058:41:::1;::::0;;10132:21:1;;;10189:2;10169:18;;;10162:30;;;;-1:-1:-1;;;10223:2:1;10208:18;;10201:41;10309:4;10294:20;;10287:36;;;-1:-1:-1;;;;;;;;;;;27058:41:0;10274:3:1;10259:19;27058:41:0::1;9920:409:1::0;28083:284:0;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;28201:2:::1;28180:18;:23;28172:74;;;::::0;-1:-1:-1;;;28172:74:0;;5594:2:1;28172:74:0::1;::::0;::::1;5576:21:1::0;5633:2;5613:18;;;5606:30;5672:34;5652:18;;;5645:62;-1:-1:-1;;;5723:18:1;;;5716:36;5769:19;;28172:74:0::1;5392:402:1::0;28172:74:0::1;28257:16;:37:::0;;;28310:49:::1;::::0;;13372:21:1;;;13429:2;13409:18;;;13402:30;;;;-1:-1:-1;;;13463:2:1;13448:18;;13441:45;13553:4;13538:20;;13531:36;;;-1:-1:-1;;;;;;;;;;;28310:49:0;13518:3:1;13503:19;28310:49:0::1;13160:413:1::0;42858:218:0;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;42990:30:::1;::::0;-1:-1:-1;;;42990:30:0;;43014:4:::1;42990:30;::::0;::::1;3410:51:1::0;42952:12:0;;42930::::1;::::0;-1:-1:-1;;;;;42990:15:0;::::1;::::0;::::1;::::0;3383:18:1;;42990:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43027:35;::::0;-1:-1:-1;;;43027:35:0;;43042:10:::1;43027:35;::::0;::::1;3646:51:1::0;3713:18;;;3706:34;;;42972:48:0;;-1:-1:-1;;;;;;43027:14:0;::::1;::::0;::::1;::::0;3619:18:1;;43027:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42923:153;;42858:218:::0;:::o;26286:131::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;26364:12:::1;26341:20;:35:::0;26387:15:::1;:22:::0;;-1:-1:-1;;26387:22:0::1;26405:4;26387:22;::::0;;26286:131::o;25590:98::-;25640:13;25673:7;25666:14;;;;;:::i;43084:196::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;43179:21:::1;43219:7;4729::::0;4756:6;-1:-1:-1;;;;;4756:6:0;;4683:87;43219:7:::1;-1:-1:-1::0;;;;;43211:25:0::1;:61;43268:3;43237:28;43249:16:::0;43237:9;:28:::1;:::i;:::-;:34;;;;:::i;:::-;43211:61;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;43148:132;43084:196:::0;:::o;29417:135::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29508:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:36;;-1:-1:-1;;29508:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29417:135::o;34537:217::-;3405:10;34622:4;34671:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;34671:34:0;;;;;;;;;;34622:4;;34639:85;;34662:7;;34671:52;;34708:15;;34671:52;:::i;32049:169::-;32129:4;32146:42;3405:10;32170:9;32181:6;32146:9;:42::i;29714:110::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;29791:16:::1;:25:::0;;-1:-1:-1;;;;;;29791:25:0::1;-1:-1:-1::0;;;;;29791:25:0;;;::::1;::::0;;;::::1;::::0;;29714:110::o;30886:164::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;30962:21:::1;:29:::0;;-1:-1:-1;;30962:29:0::1;::::0;::::1;;::::0;;::::1;::::0;;;31007:35:::1;::::0;4503:41:1;;;31007:35:0::1;::::0;4491:2:1;4476:18;31007:35:0::1;4363:187:1::0;27662:292:0;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;27783:2:::1;27761:19;:24;27753:76;;;::::0;-1:-1:-1;;;27753:76:0;;7638:2:1;27753:76:0::1;::::0;::::1;7620:21:1::0;7677:2;7657:18;;;7650:30;7716:34;7696:18;;;7689:62;-1:-1:-1;;;7767:18:1;;;7760:37;7814:19;;27753:76:0::1;7436:403:1::0;27753:76:0::1;27840:17;:39:::0;;;27895:51:::1;::::0;;9306:21:1;;;9363:2;9343:18;;;9336:30;;;;-1:-1:-1;;;9397:2:1;9382:18;;9375:46;9488:4;9473:20;;9466:36;;;-1:-1:-1;;;;;;;;;;;27895:51:0;9453:3:1;9438:19;27895:51:0::1;9094:414:1::0;30610:112:0;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30679:27:0::1;30709:5;30679:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;30679:35:0::1;::::0;;30610:112::o;29984:121::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30059:31:0::1;;::::0;;;:22:::1;:31;::::0;;;;:38;;-1:-1:-1;;30059:38:0::1;30093:4;30059:38;::::0;;29984:121::o;5637:244::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5726:22:0;::::1;5718:73;;;::::0;-1:-1:-1;;;5718:73:0;;7231:2:1;5718:73:0::1;::::0;::::1;7213:21:1::0;7270:2;7250:18;;;7243:30;7309:34;7289:18;;;7282:62;-1:-1:-1;;;7360:18:1;;;7353:36;7406:19;;5718:73:0::1;7029:402:1::0;5718:73:0::1;5828:6;::::0;;5807:38:::1;::::0;-1:-1:-1;;;;;5807:38:0;;::::1;::::0;5828:6;::::1;::::0;5807:38:::1;::::0;::::1;5856:6;:17:::0;;-1:-1:-1;;;;;;5856:17:0::1;-1:-1:-1::0;;;;;5856:17:0;;;::::1;::::0;;;::::1;::::0;;5637:244::o;27239:292::-;4729:7;4756:6;-1:-1:-1;;;;;4756:6:0;3405:10;4903:23;4895:68;;;;-1:-1:-1;;;4895:68:0;;;;;;;:::i;:::-;27360:2:::1;27338:19;:24;27330:76;;;::::0;-1:-1:-1;;;27330:76:0;;8464:2:1;27330:76:0::1;::::0;::::1;8446:21:1::0;8503:2;8483:18;;;8476:30;8542:34;8522:18;;;8515:62;-1:-1:-1;;;8593:18:1;;;8586:37;8640:19;;27330:76:0::1;8262:403:1::0;27330:76:0::1;27417:17;:39:::0;;;27472:51:::1;::::0;;6822:21:1;;;6879:2;6859:18;;;6852:30;;;;-1:-1:-1;;;6913:2:1;6898:18;;6891:46;7004:4;6989:20;;6982:36;;;-1:-1:-1;;;;;;;;;;;27472:51:0;6969:3:1;6954:19;27472:51:0::1;6610:414:1::0;42514:338:0;-1:-1:-1;;;;;42608:19:0;;42600:68;;;;-1:-1:-1;;;42600:68:0;;6407:2:1;42600:68:0;;;6389:21:1;6446:2;6426:18;;;6419:30;6485:34;6465:18;;;6458:62;-1:-1:-1;;;6536:18:1;;;6529:34;6580:19;;42600:68:0;6205:400:1;42600:68:0;-1:-1:-1;;;;;42687:21:0;;42679:68;;;;-1:-1:-1;;;42679:68:0;;13780:2:1;42679:68:0;;;13762:21:1;13819:2;13799:18;;;13792:30;13858:34;13838:18;;;13831:62;-1:-1:-1;;;13909:18:1;;;13902:32;13951:19;;42679:68:0;13578:398:1;42679:68:0;-1:-1:-1;;;;;42760:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;42812:32;;14127:25:1;;;42812:32:0;;14100:18:1;42812:32:0;;;;;;;42514:338;;;:::o;38794:3292::-;38892:15;;;;;:80;;-1:-1:-1;;;;;;38912:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;38942:29:0;;;;;;:18;:29;;;;;;;;38912:59;38884:112;;;;-1:-1:-1;;;38884:112:0;;10952:2:1;38884:112:0;;;10934:21:1;10991:2;10971:18;;;10964:30;-1:-1:-1;;;11010:18:1;;;11003:49;11069:18;;38884:112:0;10750:343:1;38884:112:0;-1:-1:-1;;;;;39015:20:0;;39007:70;;;;-1:-1:-1;;;39007:70:0;;6001:2:1;39007:70:0;;;5983:21:1;6040:2;6020:18;;;6013:30;6079:34;6059:18;;;6052:62;-1:-1:-1;;;6130:18:1;;;6123:35;6175:19;;39007:70:0;5799:401:1;39007:70:0;-1:-1:-1;;;;;39096:23:0;;39088:71;;;;-1:-1:-1;;;39088:71:0;;12079:2:1;39088:71:0;;;12061:21:1;12118:2;12098:18;;;12091:30;12157:34;12137:18;;;12130:62;-1:-1:-1;;;12208:18:1;;;12201:33;12251:19;;39088:71:0;11877:399:1;39088:71:0;-1:-1:-1;;;;;39179:21:0;;;;;;:13;:21;;;;;;;;39178:22;:51;;;;-1:-1:-1;;;;;;39205:24:0;;;;;;:13;:24;;;;;;;;39204:25;39178:51;39170:113;;;;-1:-1:-1;;;39170:113:0;;11661:2:1;39170:113:0;;;11643:21:1;11700:2;11680:18;;;11673:30;11739:34;11719:18;;;11712:62;-1:-1:-1;;;11790:18:1;;;11783:47;11847:19;;39170:113:0;11459:413:1;39170:113:0;39633:30;;39623:4;39578:24;39605;;;:9;:24;;;;;;:58;;;;;;39678:40;;-1:-1:-1;39702:16:0;;-1:-1:-1;;;39702:16:0;;;;39701:17;39678:40;:71;;;;-1:-1:-1;;;;;;39723:26:0;;;;;;:18;:26;;;;;;;;39722:27;39678:71;:96;;;;-1:-1:-1;39753:21:0;;;;39678:96;39674:206;;;39821:47;39837:30;;39821:15;:47::i;:::-;-1:-1:-1;;;;;40019:26:0;;40003:12;40019:26;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;40049:29:0;;;;;;:18;:29;;;;;;;;40019:59;40018:140;;;;-1:-1:-1;;;;;;40098:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;40128:29:0;;;;;;:18;:29;;;;;;;;40098:59;40096:62;40018:140;40003:155;;40171:20;40206;40241:15;40271:16;40308:7;40304:1222;;;40414:12;;40400:11;:26;:74;;;;;40471:2;40447:20;;40432:12;:35;;;;:::i;:::-;40431:42;40400:74;40399:133;;;;40512:20;;40496:12;:36;40399:133;40398:190;;;;-1:-1:-1;;;;;;40555:33:0;;;;;;:22;:33;;;;;;;;40554:34;40398:190;40376:294;;;-1:-1:-1;;;;;40623:24:0;;;;;;:13;:24;;;;;:31;;-1:-1:-1;;40623:31:0;40650:4;40623:31;;;40376:294;-1:-1:-1;;;;;40716:26:0;;;;;;:18;:26;;;;;;;;40712:194;;;40778:39;40792:6;40800:16;;40778:13;:39::i;:::-;40763:54;;40851:39;40865:6;40873:16;;40851:13;:39::i;:::-;40836:54;;40712:194;-1:-1:-1;;;;;40953:29:0;;;;;;:18;:29;;;;;;;;40949:364;;;41018:40;41032:6;41040:17;;41018:13;:40::i;:::-;41003:55;;41092:40;41106:6;41114:17;;41092:13;:40::i;:::-;41077:55;;41161:35;41175:6;41183:12;;41161:13;:35::i;:::-;41151:45;;41217:19;41228:7;41217:10;:19::i;:::-;41260:37;;14127:25:1;;;41285:1:0;;-1:-1:-1;;;;;41260:37:0;;;;;14115:2:1;14100:18;41260:37:0;;;;;;;40949:364;41359:4;-1:-1:-1;;;;;41334:60:0;;;41366:27;41381:12;41366;:27;:::i;:::-;41334:60;;14127:25:1;;;14115:2;14100:18;41334:60:0;;;;;;;41452:7;41422:27;41437:12;41422;:27;:::i;:::-;:37;;;;:::i;:::-;41494:4;41476:24;;;;:9;:24;;;;;:36;;41411:48;;-1:-1:-1;41411:48:0;;41476:24;;;:36;;41411:48;;41476:36;:::i;:::-;;;;-1:-1:-1;;40304:1222:0;41663:12;41637:22;;:38;;;;;;;:::i;:::-;;;;;;;;41712:12;41686:22;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;41762:33:0;;;;;;:22;:33;;;;;;;;41761:34;:111;;;;-1:-1:-1;41858:14:0;;41836:17;41845:8;41836:6;:17;:::i;:::-;-1:-1:-1;;;;;41812:20:0;;;;;;:9;:20;;;;;;:42;;;;:::i;:::-;:60;41761:111;41745:138;41737:198;;;;-1:-1:-1;;;41737:198:0;;10536:2:1;41737:198:0;;;10518:21:1;10575:2;10555:18;;;10548:30;10614:34;10594:18;;;10587:62;-1:-1:-1;;;10665:18:1;;;10658:45;10720:19;;41737:198:0;10334:411:1;41737:198:0;-1:-1:-1;;;;;41948:17:0;;;;;;:9;:17;;;;;:27;;41969:6;;41948:17;:27;;41969:6;;41948:27;:::i;:::-;;;;-1:-1:-1;42010:17:0;;-1:-1:-1;42019:8:0;42010:6;:17;:::i;:::-;-1:-1:-1;;;;;41986:20:0;;;;;;:9;:20;;;;;:41;;:20;;;:41;;;;;:::i;:::-;;;;;;;;42060:9;-1:-1:-1;;;;;42043:35:0;42052:6;-1:-1:-1;;;;;42043:35:0;;42071:6;42043:35;;;;14127:25:1;;14115:2;14100:18;;13981:177;42043:35:0;;;;;;;;38873:3213;;;;;;38794:3292;;;:::o;36755:1562::-;21851:16;:23;;-1:-1:-1;;;;21851:23:0;-1:-1:-1;;;21851:23:0;;;36924:22:::1;::::0;36899::::1;::::0;:47:::1;::::0;36924:22;36899:47:::1;:::i;:::-;36883:11;36858:22;;:36;;;;:::i;:::-;36857:90;;;;:::i;:::-;36834:113;;36977:22;;36962:12;:37;36958:85;;;-1:-1:-1::0;37018:22:0::1;::::0;36958:85:::1;37055:20;37078:26;37092:12:::0;37078:11;:26:::1;:::i;:::-;37055:49;;37134:22;;37119:12;:37;37115:85;;;-1:-1:-1::0;37175:22:0::1;::::0;37115:85:::1;37263:12;37237:22;;:38;;;;;;;:::i;:::-;;;;;;;;37312:12;37286:22;;:38;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;37388:12:0::1;::::0;-1:-1:-1;37403:16:0::1;37418:1;37403:12:::0;:16:::1;:::i;:::-;37388:31:::0;-1:-1:-1;37430:17:0::1;37450:19;37388:31:::0;37450:12;:19:::1;:::i;:::-;37430:39:::0;-1:-1:-1;37772:21:0::1;37850:38;37868:4:::0;37882::::1;37850:17;:38::i;:::-;37947:18;37968:38;37992:14:::0;37968:21:::1;:38;:::i;:::-;37947:59;;38054:36;38068:9;38079:10;38054:13;:36::i;:::-;38106:43;::::0;;15350:25:1;;;15406:2;15391:18;;15384:34;;;15434:18;;;15427:34;;;38106:43:0::1;::::0;15338:2:1;15323:18;38106:43:0::1;;;;;;;38241:16;::::0;38209:49:::1;::::0;38227:12;;-1:-1:-1;;;;;38241:16:0::1;38209:17;:49::i;:::-;38274:33;::::0;14127:25:1;;;38274:33:0::1;::::0;14115:2:1;14100:18;38274:33:0::1;;;;;;;-1:-1:-1::0;;21916:5:0;21897:24;;-1:-1:-1;;;;21897:24:0;;;-1:-1:-1;;;;;36755:1562:0:o;31712:130::-;31787:7;31831:3;31815:12;31824:3;31815:6;:12;:::i;:::-;31814:20;;;;:::i;:::-;31807:27;31712:130;-1:-1:-1;;;31712:130:0:o;34891:136::-;34967:11;34951:12;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;34994:25:0;;14127::1;;;34994::0;;14115:2:1;14100:18;34994:25:0;13981:177:1;35230:595:0;35395:16;;;35409:1;35395:16;;;;;;;;35371:21;;35395:16;;;;;;;;;;-1:-1:-1;35395:16:0;35371:40;;35440:4;35422;35427:1;35422:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;35422:23:0;;;-1:-1:-1;;;;;35422:23:0;;;;;35466:15;-1:-1:-1;;;;;35466:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35456:4;35461:1;35456:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;35456:32:0;;;-1:-1:-1;;;;;35456:32:0;;;;;35501:62;35518:4;35533:15;35551:11;35501:8;:62::i;:::-;35602:213;;-1:-1:-1;;;35602:213:0;;-1:-1:-1;;;;;35602:15:0;:66;;;;:213;;35683:11;;35709:1;;35753:4;;35772:2;;35789:15;;35602:213;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35298:527;35230:595;;:::o;36022:524::-;36173:62;36190:4;36205:15;36223:11;36173:8;:62::i;:::-;36278:258;;-1:-1:-1;;;36278:258:0;;36350:4;36278:258;;;4092:34:1;;;4142:18;;;4135:34;;;36396:1:0;4185:18:1;;;4178:34;;;4228:18;;;4221:34;4271:19;;;4264:44;36510:15:0;4324:19:1;;;4317:35;36278:15:0;-1:-1:-1;;;;;36278:31:0;;;;36317:9;;4026:19:1;;36278:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;36022:524;;:::o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:382::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1576:31;1601:5;1576:31;:::i;:::-;1626:5;-1:-1:-1;1683:2:1;1668:18;;1655:32;1696:30;1655:32;1696:30;:::i;1763:315::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2083:241::-;2139:6;2192:2;2180:9;2171:7;2167:23;2163:32;2160:52;;;2208:1;2205;2198:12;2160:52;2247:9;2234:23;2266:28;2288:5;2266:28;:::i;2329:245::-;2396:6;2449:2;2437:9;2428:7;2424:23;2420:32;2417:52;;;2465:1;2462;2455:12;2417:52;2497:9;2491:16;2516:28;2538:5;2516:28;:::i;2579:180::-;2638:6;2691:2;2679:9;2670:7;2666:23;2662:32;2659:52;;;2707:1;2704;2697:12;2659:52;-1:-1:-1;2730:23:1;;2579:180;-1:-1:-1;2579:180:1:o;2764:184::-;2834:6;2887:2;2875:9;2866:7;2862:23;2858:32;2855:52;;;2903:1;2900;2893:12;2855:52;-1:-1:-1;2926:16:1;;2764:184;-1:-1:-1;2764:184:1:o;2953:306::-;3041:6;3049;3057;3110:2;3098:9;3089:7;3085:23;3081:32;3078:52;;;3126:1;3123;3116:12;3078:52;3155:9;3149:16;3139:26;;3205:2;3194:9;3190:18;3184:25;3174:35;;3249:2;3238:9;3234:18;3228:25;3218:35;;2953:306;;;;;:::o;4790:597::-;4902:4;4931:2;4960;4949:9;4942:21;4992:6;4986:13;5035:6;5030:2;5019:9;5015:18;5008:34;5060:1;5070:140;5084:6;5081:1;5078:13;5070:140;;;5179:14;;;5175:23;;5169:30;5145:17;;;5164:2;5141:26;5134:66;5099:10;;5070:140;;;5228:6;5225:1;5222:13;5219:91;;;5298:1;5293:2;5284:6;5273:9;5269:22;5265:31;5258:42;5219:91;-1:-1:-1;5371:2:1;5350:15;-1:-1:-1;;5346:29:1;5331:45;;;;5378:2;5327:54;;4790:597;-1:-1:-1;;;4790:597:1:o;11098:356::-;11300:2;11282:21;;;11319:18;;;11312:30;11378:34;11373:2;11358:18;;11351:62;11445:2;11430:18;;11098:356::o;14163:980::-;14425:4;14473:3;14462:9;14458:19;14504:6;14493:9;14486:25;14530:2;14568:6;14563:2;14552:9;14548:18;14541:34;14611:3;14606:2;14595:9;14591:18;14584:31;14635:6;14670;14664:13;14701:6;14693;14686:22;14739:3;14728:9;14724:19;14717:26;;14778:2;14770:6;14766:15;14752:29;;14799:1;14809:195;14823:6;14820:1;14817:13;14809:195;;;14888:13;;-1:-1:-1;;;;;14884:39:1;14872:52;;14979:15;;;;14944:12;;;;14920:1;14838:9;14809:195;;;-1:-1:-1;;;;;;;15060:32:1;;;;15055:2;15040:18;;15033:60;-1:-1:-1;;;15124:3:1;15109:19;15102:35;15021:3;14163:980;-1:-1:-1;;;14163:980:1:o;15661:128::-;15701:3;15732:1;15728:6;15725:1;15722:13;15719:39;;;15738:18;;:::i;:::-;-1:-1:-1;15774:9:1;;15661:128::o;15794:217::-;15834:1;15860;15850:132;;15904:10;15899:3;15895:20;15892:1;15885:31;15939:4;15936:1;15929:15;15967:4;15964:1;15957:15;15850:132;-1:-1:-1;15996:9:1;;15794:217::o;16016:168::-;16056:7;16122:1;16118;16114:6;16110:14;16107:1;16104:21;16099:1;16092:9;16085:17;16081:45;16078:71;;;16129:18;;:::i;:::-;-1:-1:-1;16169:9:1;;16016:168::o;16189:125::-;16229:4;16257:1;16254;16251:8;16248:34;;;16262:18;;:::i;:::-;-1:-1:-1;16299:9:1;;16189:125::o;16319:380::-;16398:1;16394:12;;;;16441;;;16462:61;;16516:4;16508:6;16504:17;16494:27;;16462:61;16569:2;16561:6;16558:14;16538:18;16535:38;16532:161;;;16615:10;16610:3;16606:20;16603:1;16596:31;16650:4;16647:1;16640:15;16678:4;16675:1;16668:15;16532:161;;16319:380;;;:::o;16704:127::-;16765:10;16760:3;16756:20;16753:1;16746:31;16796:4;16793:1;16786:15;16820:4;16817:1;16810:15;16836:127;16897:10;16892:3;16888:20;16885:1;16878:31;16928:4;16925:1;16918:15;16952:4;16949:1;16942:15;17100:131;-1:-1:-1;;;;;17175:31:1;;17165:42;;17155:70;;17221:1;17218;17211:12;17155:70;17100:131;:::o;17236:118::-;17322:5;17315:13;17308:21;17301:5;17298:32;17288:60;;17344:1;17341;17334:12

Swarm Source

ipfs://f735a4d962fab40ac10ee15f0a3fe5e976772d911aa0f50f2657857387f71f56
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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