ETH Price: $2,491.23 (-0.76%)

Contract

0x3914BDB4130306f80F5d8ee099C180442d19680D
 

Overview

ETH Balance

0.016572501859490235 ETH

Eth Value

$41.29 (@ $2,491.23/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer211022152024-11-02 20:02:352 hrs ago1730577755IN
deployyyyer: DEPLOY Token
0 ETH0.000398615.42314589
Transfer211008642024-11-02 15:31:237 hrs ago1730561483IN
deployyyyer: DEPLOY Token
0 ETH0.000603538.21103673
Approve211005062024-11-02 14:18:358 hrs ago1730557115IN
deployyyyer: DEPLOY Token
0 ETH0.000333136.47329093
Approve210996732024-11-02 11:31:2311 hrs ago1730547083IN
deployyyyer: DEPLOY Token
0 ETH0.000308765.99978601
Approve210982362024-11-02 6:41:2316 hrs ago1730529683IN
deployyyyer: DEPLOY Token
0 ETH0.000248584.82469963
Transfer210953512024-11-01 21:01:1126 hrs ago1730494871IN
deployyyyer: DEPLOY Token
0 ETH0.000645568.78288145
Approve210949532024-11-01 19:40:5927 hrs ago1730490059IN
deployyyyer: DEPLOY Token
0 ETH0.000313926.09287624
Transfer210949462024-11-01 19:39:3527 hrs ago1730489975IN
deployyyyer: DEPLOY Token
0 ETH0.000418995.70136464
Approve210928782024-11-01 12:44:3534 hrs ago1730465075IN
deployyyyer: DEPLOY Token
0 ETH0.0005828411.32551807
Approve210928592024-11-01 12:40:4734 hrs ago1730464847IN
deployyyyer: DEPLOY Token
0 ETH0.0008263216.12813967
Approve210917062024-11-01 8:49:2338 hrs ago1730450963IN
deployyyyer: DEPLOY Token
0 ETH0.000264517.75170701
Approve210906662024-11-01 5:20:2341 hrs ago1730438423IN
deployyyyer: DEPLOY Token
0 ETH0.00016345.6
Approve210906632024-11-01 5:19:4741 hrs ago1730438387IN
deployyyyer: DEPLOY Token
0 ETH0.000284855.53504502
Approve210904232024-11-01 4:31:4742 hrs ago1730435507IN
deployyyyer: DEPLOY Token
0 ETH0.000189096.4804415
Approve210904202024-11-01 4:31:1142 hrs ago1730435471IN
deployyyyer: DEPLOY Token
0 ETH0.000339656.6
Approve210902592024-11-01 3:58:5943 hrs ago1730433539IN
deployyyyer: DEPLOY Token
0 ETH0.000209136.12248919
Approve210881542024-10-31 20:56:472 days ago1730408207IN
deployyyyer: DEPLOY Token
0 ETH0.00045668.86627869
Approve210865222024-10-31 15:29:232 days ago1730388563IN
deployyyyer: DEPLOY Token
0 ETH0.0008372616.25025063
Approve210863822024-10-31 15:01:232 days ago1730386883IN
deployyyyer: DEPLOY Token
0 ETH0.0010652720.79198923
Approve210862592024-10-31 14:36:472 days ago1730385407IN
deployyyyer: DEPLOY Token
0 ETH0.0012119123.54918728
Approve210858642024-10-31 13:17:352 days ago1730380655IN
deployyyyer: DEPLOY Token
0 ETH0.000501759.8
Approve210856832024-10-31 12:41:232 days ago1730378483IN
deployyyyer: DEPLOY Token
0 ETH0.0003288210.50982476
Approve210852852024-10-31 11:21:352 days ago1730373695IN
deployyyyer: DEPLOY Token
0 ETH0.000477459.32556218
Approve210852452024-10-31 11:13:352 days ago1730373215IN
deployyyyer: DEPLOY Token
0 ETH0.000496149.68595377
Approve210851732024-10-31 10:59:112 days ago1730372351IN
deployyyyer: DEPLOY Token
0 ETH0.0003593110.53358732
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
210994042024-11-02 10:36:5912 hrs ago1730543819
deployyyyer: DEPLOY Token
0.01435893 ETH
210965092024-11-02 0:54:3522 hrs ago1730508875
deployyyyer: DEPLOY Token
0.00007603 ETH
210961062024-11-01 23:33:3523 hrs ago1730504015
deployyyyer: DEPLOY Token
0.00003041 ETH
210957522024-11-01 22:22:2324 hrs ago1730499743
deployyyyer: DEPLOY Token
0.0021071 ETH
210949572024-11-01 19:41:4727 hrs ago1730490107
deployyyyer: DEPLOY Token
0.39086803 ETH
210949572024-11-01 19:41:4727 hrs ago1730490107
deployyyyer: DEPLOY Token
0.13028934 ETH
210949572024-11-01 19:41:4727 hrs ago1730490107
deployyyyer: DEPLOY Token
0.28431465 ETH
210896282024-11-01 1:52:1145 hrs ago1730425931
deployyyyer: DEPLOY Token
0.00145275 ETH
210892332024-11-01 0:32:5946 hrs ago1730421179
deployyyyer: DEPLOY Token
0.01026861 ETH
210854422024-10-31 11:52:592 days ago1730375579
deployyyyer: DEPLOY Token
0.02050694 ETH
210849552024-10-31 10:15:352 days ago1730369735
deployyyyer: DEPLOY Token
0.00196921 ETH
210848992024-10-31 10:04:232 days ago1730369063
deployyyyer: DEPLOY Token
0.00536194 ETH
210847892024-10-31 9:42:232 days ago1730367743
deployyyyer: DEPLOY Token
0.0061833 ETH
210847742024-10-31 9:39:232 days ago1730367563
deployyyyer: DEPLOY Token
0.00728814 ETH
210845932024-10-31 9:03:112 days ago1730365391
deployyyyer: DEPLOY Token
0.00527914 ETH
210845792024-10-31 9:00:232 days ago1730365223
deployyyyer: DEPLOY Token
0.00597576 ETH
210845232024-10-31 8:48:472 days ago1730364527
deployyyyer: DEPLOY Token
0.00685297 ETH
210845202024-10-31 8:48:112 days ago1730364491
deployyyyer: DEPLOY Token
0.00753977 ETH
210844992024-10-31 8:43:592 days ago1730364239
deployyyyer: DEPLOY Token
0.0085817 ETH
210844392024-10-31 8:31:592 days ago1730363519
deployyyyer: DEPLOY Token
0.00945393 ETH
210842772024-10-31 7:59:352 days ago1730361575
deployyyyer: DEPLOY Token
0.00739014 ETH
210842762024-10-31 7:59:232 days ago1730361563
deployyyyer: DEPLOY Token
0.00848257 ETH
210842742024-10-31 7:58:592 days ago1730361539
deployyyyer: DEPLOY Token
0.00983699 ETH
210842542024-10-31 7:54:592 days ago1730361299
deployyyyer: DEPLOY Token
0.01089337 ETH
210842432024-10-31 7:52:472 days ago1730361167
deployyyyer: DEPLOY Token
0.01309115 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Deployyyyer

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 10 : Deployyyyer.sol
// SPDX-License-Identifier: MIT
/*********************************************************************************************\
* Deployyyyer: https://deployyyyer.io
* Twitter: https://x.com/deployyyyer
* Telegram: https://t.me/Deployyyyer
/*********************************************************************************************/
pragma solidity ^0.8.23;


import { LibDiamond } from "./libraries/LibDiamond.sol";
import { IDiamondCut } from "./interfaces/IDiamondCut.sol";

import "./libraries/LibDiamond.sol";
import "./interfaces/IDiamondLoupe.sol";
import "./interfaces/IDiamondCut.sol";
import "./interfaces/IERC173.sol";
import "./interfaces/IERC165.sol";
import "./interfaces/IERC20.sol";
import { INewToken, IUniswapV2Router02 } from "./interfaces/INewToken.sol";
import "./libraries/LibAppStorage.sol";
//import "hardhat/console.sol";

/// @title Deployyyyer 
/// @notice Diamond Proxy for Deployyyyer
/// @dev 
contract Deployyyyer { 
    AppStorage internal s;
    event Transfer(address indexed from, address indexed to, uint256 value);
    //event Approval(address indexed owner, address indexed spender, uint256 value);
    event FactoryBuilt(string name, string symbol, uint256 supply);
    event TeamSet(INewToken.TeamParams tparams);
    event LaunchCostChanged(uint256 ethCost, uint256 deployyyyerCost);
    event PromoCostChanged(uint256 ethCost, uint256 deployyyyerCost);
    event MinLiquidityChanged(uint256 minLiq);
    event IncreasedLimits(uint256 maxWallet, uint256 maxTx);

    struct ConstructorArgs {
        bool createToken;
        address taxwallet;
        address stakingFacet;
        address presaleFacet;
        address tokenFacet;
        address v2router;
        address team1;
        address team2;
        address team3;
        address marketing;
        address treasury;
        uint256 ethCost;
        uint256 deployyyyerCost;
        uint256 promoCostEth;
        uint256 promoCostDeployyyyer;
        uint256 minLiq;
        address uniswapRouter;
        address sushiswapRouter;
        address pancakeswapRouter;

    }

    /// @notice Constructor of Diamond Proxy for Deployyyyer
    constructor(IDiamondCut.FacetCut[] memory _diamondCut, ConstructorArgs memory _args) {
        if(_args.createToken) {
            emit FactoryBuilt("Deployyyyer", "DEPLOY", 1000000000);
        } else {
            emit FactoryBuilt("Deployyyyer", "DEPLOY", 0);
        }
        LibDiamond.diamondCut(_diamondCut, address(0), new bytes(0));
        //console.log(msg.sender);
        LibDiamond.setContractOwner(msg.sender);

        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();

        // adding ERC165 data
        ds.supportedInterfaces[type(IERC165).interfaceId] = true;
        //ds.supportedInterfaces[type(IDiamondCut).interfaceId] = true;
        ds.supportedInterfaces[type(IDiamondLoupe).interfaceId] = true;
        ds.supportedInterfaces[type(IERC173).interfaceId] = true;
        ds.supportedInterfaces[type(IERC20).interfaceId] = true;

        //init appStorage 
        s.stakingFacet = _args.stakingFacet;
        s.presaleFacet = _args.presaleFacet;
        //s.deployyyyer = address(this);

        s.isParent = true;
        s.decimals = 18;
        s.ethCost = _args.ethCost; //2 * 10**s.decimals / 10; //0.2eth
        s.deployyyyerCost = _args.deployyyyerCost; //100000 * 10**s.decimals;
        s.promoCostEth = _args.promoCostEth; //5 * 10**s.decimals / 100; //0.05 eth per hour
        s.promoCostDeployyyyer = _args.promoCostDeployyyyer; //50000 * 10**s.decimals;
        s.minLiq = _args.minLiq; //1 * 10**s.decimals / 10; //0.1eth min
        //s.bridge = address(0);
        emit LaunchCostChanged(s.ethCost, s.deployyyyerCost);
        emit PromoCostChanged(s.promoCostEth, s.promoCostDeployyyyer);
        emit MinLiquidityChanged(s.minLiq);

        s.isFreeTier = false;

        s.taxWallet = payable(_args.taxwallet);
        s.deployyyyerCa = payable(address(this));
        s.tokenFacet = _args.tokenFacet;
        
        s.validRouters[_args.v2router] = true;
        s.validRouters[_args.uniswapRouter] = true;
        s.validRouters[_args.sushiswapRouter] = true;
        s.validRouters[_args.pancakeswapRouter] = true;
        
        if(_args.createToken) {
            
            s.maxBuyTax = 10;
            s.minBuyTax = 2;
            s.taxBuy = s.maxBuyTax; //20%

            
            s.maxSellTax = 10;
            s.minSellTax = 2;
            s.taxSell = s.maxSellTax; //20%
            
            s.initTaxType = 1;
            s.initInterval = 0;
            s.countInterval = 20;

            // Reduction Rules
            s.buyCount = 0; 
            s.name = "Deployyyyer";
            s.symbol = "DEPLOY";
            s.tTotal = 1000000000 * 10**s.decimals; //1b tokens in wei

            // Contract Swap Rules            
            s.taxSwapThreshold = s.tTotal * 1 / 1000; //0.1%
            s.maxTaxSwap = s.tTotal * 1 / 100; //1%
            s.preventSwap = 20;

            s.maxWallet = s.tTotal * 2 / 100;  //2% 
            s.maxTx = s.tTotal * 2 / 100;  //2% 
            s.walletLimited = true;
            s.balances[address(this)] = s.tTotal;

            emit IncreasedLimits(2, 2);

            emit Transfer(address(0), address(this), s.tTotal);

            s.cliffPeriod = 0;
            s.vestingPeriod = 0;

            s.teamShare[_args.team1] = s.tTotal * 4 / 100;
            s.teamShare[_args.team2] = s.tTotal * 3 / 100;
            s.teamShare[_args.team3] = s.tTotal * 3 / 100;
            s.teamShare[_args.marketing] = s.tTotal * 5 / 100; 
            s.teamShare[_args.treasury] = s.tTotal * 5 / 100; 
            s.isExTxLimit[_args.marketing] = true;
            s.isExWaLimit[_args.marketing] = true;
            s.isExTxLimit[_args.treasury] = true;
            s.isExWaLimit[_args.treasury] = true;
            s.isExTxLimit[_args.team1] = true;
            s.isExWaLimit[_args.team1] = true;
            s.isExTxLimit[_args.team2] = true;
            s.isExWaLimit[_args.team2] = true;
            s.isExTxLimit[_args.team3] = true;
            s.isExWaLimit[_args.team3] = true;

            emit TeamSet(INewToken.TeamParams(_args.team1, 4, s.cliffPeriod, s.vestingPeriod, true)); 
            emit TeamSet(INewToken.TeamParams(_args.team2, 3, s.cliffPeriod, s.vestingPeriod, true)); 
            emit TeamSet(INewToken.TeamParams(_args.team3, 3, s.cliffPeriod, s.vestingPeriod, true)); 
            emit TeamSet(INewToken.TeamParams(_args.marketing, 5, s.cliffPeriod, s.vestingPeriod, true));
            emit TeamSet(INewToken.TeamParams(_args.treasury, 5, s.cliffPeriod, s.vestingPeriod, true)); 

            s.teamBalance = s.tTotal * 20 / 100;
            s.uniswapV2Router = IUniswapV2Router02(_args.v2router);
            s.allowances[address(this)][address(s.uniswapV2Router)] = s.tTotal;
            //emit Approval(address(this), address(s.uniswapV2Router), s.tTotal);
            s.launchedTokens[address(this)] = msg.sender; 
        }
        

    }   

    /// @notice fallback
    // Find facet for function that is called and execute the
    // function if a facet is found and return any value.
    fallback() external payable {
        LibDiamond.DiamondStorage storage ds;
        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;
        // get diamond storage
        assembly {
            ds.slot := position
        }
        // get facet from function selector
        address facet = address(bytes20(ds.facets[msg.sig]));
        require(facet != address(0), "S1");
        // Execute external function from facet using delegatecall and return any value.
        assembly {
            // copy function selector and any arguments
            calldatacopy(0, 0, calldatasize())
            // execute function call using the facet
            let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
            // get any return value
            returndatacopy(0, 0, returndatasize())
            // return any return value or error back to the caller
            switch result
                case 0 {
                    revert(0, returndatasize())
                }
                default {
                    return(0, returndatasize())
                }
        }
    }

    /// @notice receive
    receive() external payable {}
}

File 2 of 10 : IDiamondCut.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

interface IDiamondCut {
    enum FacetCutAction {Add, Replace, Remove}
    // Add=0, Replace=1, Remove=2

    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }

    /// @notice Add/replace/remove any number of functions and optionally execute
    ///         a function with delegatecall
    /// @param _diamondCut Contains the facet addresses and function selectors
    /// @param _init The address of the contract or facet to execute _calldata
    /// @param _calldata A function call, including function selector and arguments
    ///                  _calldata is executed with delegatecall on _init
    function diamondCut(
        FacetCut[] calldata _diamondCut,
        address _init,
        bytes calldata _calldata
    ) external;

    event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);
}

File 3 of 10 : IDiamondLoupe.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

// A loupe is a small magnifying glass used to look at diamonds.
// These functions look at diamonds
interface IDiamondLoupe {
    /// These functions are expected to be called frequently
    /// by tools.

    struct Facet {
        address facetAddress;
        bytes4[] functionSelectors;
    }

    /// @notice Gets all facet addresses and their four byte function selectors.
    /// @return facets_ Facet
    function facets() external view returns (Facet[] memory facets_);

    /// @notice Gets all the function selectors supported by a specific facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_);

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses() external view returns (address[] memory facetAddresses_);

    /// @notice Gets the facet that supports the given selector.
    /// @dev If facet is not found return address(0).
    /// @param _functionSelector The function selector.
    /// @return facetAddress_ The facet address.
    function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_);
}

File 4 of 10 : IERC165.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

interface IERC165 {
    /// @notice Query if a contract implements an interface
    /// @param interfaceId The interface identifier, as specified in ERC-165
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    /// @return `true` if the contract implements `interfaceID` and
    ///  `interfaceID` is not 0xffffffff, `false` otherwise
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

File 5 of 10 : IERC173.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

/// @title ERC-173 Contract Ownership Standard
///  Note: the ERC-165 identifier for this interface is 0x7f5828d0
/* is ERC165 */
interface IERC173 {
    /// @dev This emits when ownership of a contract changes.
    //event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /// @notice Get the address of the owner
    /// @return owner_ The address of the owner.
    function owner() external view returns (address owner_);

    /// @notice Set the address of the new owner of the contract
    /// @dev Set _newOwner to address(0) to renounce any ownership.
    /// @param _newOwner The address of the new owner of the contract
    function transferOwnership(address _newOwner) external;
}

File 6 of 10 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;


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

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

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address _owner) external view returns (uint256 balance);

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    ) external returns (bool success);

    function transfer(address _to, uint256 _value) external returns (bool success);

    function approve(address _spender, uint256 _value) external returns (bool success);

    function allowance(address _owner, address _spender) external view returns (uint256 remaining);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 7 of 10 : INewToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
import { IPresale} from "./IPresale.sol";

interface INewToken {
    struct InitParams {
        address owner;
        address taxWallet;
        address stakingFacet;
        address v2router;
        bool isFreeTier;
        uint256 minLiq; 
        uint256 supply;
        uint256 initTaxType; //0-time,1-buyCount,2-hybrid
        uint256 initInterval; //seconds 0-1 hour(if 1m: 1m, 3m, 6m, 10m)
        uint256 countInterval; //0-100 
        uint256  maxBuyTax; //40%
        uint256  minBuyTax; //0
        uint256  maxSellTax; //40%
        uint256  minSellTax; //0
        uint256  lpTax; //0-90 of buy or sell tax
        uint256 maxWallet;
        uint256 maxTx;
        uint256 preventSwap;
        uint256 maxSwap;
        uint256 taxSwapThreshold;
        string  name;
        string  symbol;
    }
    
    struct TeamParams {
        address team1;
        uint256 team1p; 
        uint256 cliffPeriod; 
        uint256 vestingPeriod;
        bool isAdd;
    }

	function rescueERC20(address _address) external;
	function increaseLimits(uint256 maxwallet, uint256 maxtx) external;
	function startTrading(uint256 lockPeriod, bool shouldBurn, address router) external;
    //require trading and presale not started
    function addPresale(address presale, uint256 percent, IPresale.PresaleParams memory newdetails) external;
    //require caller to be presale address
    function finPresale() external;
    function refPresale() external;
    //requires presale not started and trading not started
    function addTeam(TeamParams memory params) external;
    //what if we remove team out from init?
}

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

}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

File 8 of 10 : IPresale.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

interface IPresale {
    struct PresaleParams {
            address owner;
            address token;
            uint256 softcap;
            uint256 hardcap;
            uint256 startTs;
            uint256 finishTs;
            uint256 duration;
            uint256 liqPercent;
            uint256 cliffPeriod;
            uint256 vestingPeriod;
            uint256 status;
            uint256 sold;
            uint256 maxEth;
            uint256 maxBag;
            uint256 fee;
    }

    function transferOwnership(address _newOwner) external;
    function owner() external view returns (address);
    function rescueERC20(address _address) external;
    function setupPresale(PresaleParams memory params) external;
    function buyTokens(uint256 _amount) external payable;
    //should we offer or force token vesting??
    function claimTokens() external;
    function getRefund() external;
    function getPresaleDetails() external view returns(PresaleParams memory); 
    function finishPresale() external; 
    function claimEth() external;
    function getClaimableTokens(address user) external view returns(uint256,uint256,uint256,uint256);
    function refundPresale() external;
}

File 9 of 10 : LibAppStorage.sol
// SPDX-License-Identifier: MIT
/*********************************************************************************************\
* Deployyyyer: https://deployyyyer.io
* Twitter: https://x.com/deployyyyer
* Telegram: https://t.me/Deployyyyer
/*********************************************************************************************/
pragma solidity ^0.8.23;
import {LibDiamond} from "./LibDiamond.sol";
//import {LibMeta} from "./LibMeta.sol";
import {IUniswapV2Factory, IUniswapV2Router02} from "../interfaces/INewToken.sol";



struct AppStorage {
    mapping(address => bool) validRouters; //parentOnly
    mapping(address => bool) allowedTokens; //parentOnly
    //this should be bool too
    mapping(address => address) launchedTokens; //parentOnly
    mapping(address => address) launchedPresale; //parentOnly
    //cost of launch, cost of promo, cost of setting socials is 2xpromoCostEth
    uint256 ethCost; //parentOnly
    uint256 deployyyyerCost; //parentOnly
    uint256 promoCostEth; //parentOnly
    uint256 promoCostDeployyyyer; //parentOnly
    address bridge; //parentOnly

    //mapping of user address to score
    mapping(address => uint256) myScore; //parentOnly

    //+1 for launch, +5 for liquidity add, +50 for lp burn, -100 for lp retrieve
    uint256 cScore; //cScore is transferred with ownership, cScore is deducted on lp retrieve

    
    //address deployyyyer;
    bool isParent;
    uint256 minLiq;
    //this can be a map with share and clain in a structure
    mapping(address => uint256) teamShare;
    mapping(address => uint256) teamClaim;
    
    uint256 teamBalance;

    uint256 cliffPeriod; //min 30days
    uint256 vestingPeriod;//min 1day max 10000 days avg 30days.


    mapping(address => bool)  isExTxLimit; //is excluded from transaction limit
    mapping(address => bool)  isExWaLimit; //is excluded from wallet limit
    mapping (address => uint256)  balances; //ERC20 balance
    mapping (address => mapping (address => uint256))  allowances; //ERC20 balance

    address payable taxWallet; //tax wallet for the token
    address payable deployyyyerCa; //deployyyyer contract address
    address payable stakingContract; //address of staking contract for the token
    address stakingFacet; //facet address, used to launch a staking pool
    address presaleFacet; //facet address, used to launch a presale
    address tokenFacet; //facet address, used to launch a ERC20 token
    uint256 stakingShare; //share of tax sent to its staking pool
    
    
    // Reduction Rules
    uint256  buyCount; 

    uint256 initTaxType; //0-time,1-buyCount,2-hybrid,3-none
    //interval*1, lastIntEnd+(interval*2), lastIntEnd+(interval*3)
    uint256 initInterval; //seconds 0-1 hour(if 1m: 1m, 3m, 6m, 10m)
    uint256 countInterval; //0-100 

    //current taxes
    uint256  taxBuy; 
    uint256  maxBuyTax; //40%
    uint256  minBuyTax; //0

    uint256  taxSell; 
    uint256  maxSellTax; //40%
    uint256  minSellTax; //0
    
    


    uint256  tradingOpened;

    // Token Information
    uint8   decimals;
    uint256   tTotal;
    string   name;
    string   symbol;

    // Contract Swap Rules 
    uint256 preventSwap; //50            
    uint256  taxSwapThreshold; //0.1%
    uint256  maxTaxSwap; //1%
    uint256  maxWallet; //1%
    uint256  maxTx;

    IUniswapV2Router02  uniswapV2Router;
    address  uniswapV2Pair;
    
    bool  tradingOpen; //true if liquidity pool is created
    bool  inSwap;
    bool  walletLimited;
    bool isFreeTier;
    bool isBurnt;
    bool isRetrieved;
    uint256 lockPeriod;
    
    //buy back tax calculations
    uint256 lpTax; //0-50 percent of tax amount 
    uint256 halfLp;
    uint256 lastSwap;

    uint256 presaleTs;
    uint256 presaleSt;
    address presale;

}

/*
library LibAppStorage {
    function diamondStorage() internal pure returns (AppStorage storage ds) {
        assembly {
            ds.slot := 0
        }
    }

    function abs(int256 x) internal pure returns (uint256) {
        return uint256(x >= 0 ? x : -x);
    }
}
*/


contract Modifiers {
    AppStorage internal s;

    modifier onlyOwner() {
        LibDiamond.enforceIsContractOwner();
        _;
    }  
    
}

File 10 of 10 : LibDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

/*********************************************************************************************\
* Authors: Nick Mudge <[email protected]> (https://twitter.com/mudgen), 
* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
/*********************************************************************************************/
import { IDiamondCut } from "../interfaces/IDiamondCut.sol";

library LibDiamond {
    bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage");

    struct DiamondStorage {
        // maps function selectors to the facets that execute the functions.
        // and maps the selectors to their position in the selectorSlots array.
        // func selector => address facet, selector position
        mapping(bytes4 => bytes32) facets;
        // array of slots of function selectors.
        // each slot holds 8 function selectors.
        mapping(uint256 => bytes32) selectorSlots;
        // The number of function selectors in selectorSlots
        uint16 selectorCount;
        // Used to query if a contract implements an interface.
        // Used to implement ERC-165.
        mapping(bytes4 => bool) supportedInterfaces;
        // owner of the contract
        address contractOwner;
    }

    function diamondStorage() internal pure returns (DiamondStorage storage ds) {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
    }

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

    function setContractOwner(address _newOwner) internal {
        DiamondStorage storage ds = diamondStorage();
        address previousOwner = ds.contractOwner;
        ds.contractOwner = _newOwner;
        emit OwnershipTransferred(previousOwner, _newOwner);
    }

    function contractOwner() internal view returns (address contractOwner_) {
        contractOwner_ = diamondStorage().contractOwner;
    }

    function enforceIsContractOwner() internal view {
        require(msg.sender == diamondStorage().contractOwner, "l0");
    }

    //event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);

    //bytes32 constant CLEAR_ADDRESS_MASK = bytes32(uint256(0xffffffffffffffffffffffff));
    bytes32 constant CLEAR_SELECTOR_MASK = bytes32(uint256(0xffffffff << 224));

    // Internal function version of diamondCut
    // This code is almost the same as the external diamondCut,
    // except it is using 'Facet[] memory _diamondCut' instead of
    // 'Facet[] calldata _diamondCut'.
    // The code is duplicated to prevent copying calldata to memory which
    // causes an error for a two dimensional array.
    // also removed action on _calldata and _init is always address(0)
    // maintained same old signature
    function diamondCut(
        IDiamondCut.FacetCut[] memory _diamondCut,
        address _init,
        bytes memory _calldata
    ) internal {
        DiamondStorage storage ds = diamondStorage();
        uint256 originalSelectorCount = ds.selectorCount;
        uint256 selectorCount = originalSelectorCount;
        bytes32 selectorSlot;
        // Check if last selector slot is not full
        // "selectorCount & 7" is a gas efficient modulo by eight "selectorCount % 8" 
        if (selectorCount & 7 > 0) {
            // get last selectorSlot
            // "selectorSlot >> 3" is a gas efficient division by 8 "selectorSlot / 8"
            selectorSlot = ds.selectorSlots[selectorCount >> 3];
        }
        // loop through diamond cut
        for (uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++) {
            (selectorCount, selectorSlot) = addReplaceRemoveFacetSelectors(
                selectorCount,
                selectorSlot,
                _diamondCut[facetIndex].facetAddress,
                _diamondCut[facetIndex].action,
                _diamondCut[facetIndex].functionSelectors
            );
        }
        if (selectorCount != originalSelectorCount) {
            ds.selectorCount = uint16(selectorCount);
        }
        // If last selector slot is not full
        // "selectorCount & 7" is a gas efficient modulo by eight "selectorCount % 8" 
        if (selectorCount & 7 > 0) {
            // "selectorSlot >> 3" is a gas efficient division by 8 "selectorSlot / 8"
            ds.selectorSlots[selectorCount >> 3] = selectorSlot;
        }
        //emit DiamondCut(_diamondCut, _init, _calldata);
        //initializeDiamondCut(_init, _calldata);
        require(_init == address(0), "l1");
        require(_calldata.length == 0, "l2");
    }

    //supports only add, maintaining lib fn name
    function addReplaceRemoveFacetSelectors(
        uint256 _selectorCount,
        bytes32 _selectorSlot,
        address _newFacetAddress,
        IDiamondCut.FacetCutAction _action,
        bytes4[] memory _selectors
    ) internal returns (uint256, bytes32) {
        DiamondStorage storage ds = diamondStorage();
        require(_selectors.length > 0, "l3");
        if (_action == IDiamondCut.FacetCutAction.Add) {
            enforceHasContractCode(_newFacetAddress, "l4");
            for (uint256 selectorIndex; selectorIndex < _selectors.length; selectorIndex++) {
                bytes4 selector = _selectors[selectorIndex];
                bytes32 oldFacet = ds.facets[selector];
                require(address(bytes20(oldFacet)) == address(0), "l5");
                // add facet for selector
                ds.facets[selector] = bytes20(_newFacetAddress) | bytes32(_selectorCount);
                // "_selectorCount & 7" is a gas efficient modulo by eight "_selectorCount % 8" 
                uint256 selectorInSlotPosition = (_selectorCount & 7) << 5;
                // clear selector position in slot and add selector
                _selectorSlot = (_selectorSlot & ~(CLEAR_SELECTOR_MASK >> selectorInSlotPosition)) | (bytes32(selector) >> selectorInSlotPosition);
                // if slot is full then write it to storage
                if (selectorInSlotPosition == 224) {
                    // "_selectorSlot >> 3" is a gas efficient division by 8 "_selectorSlot / 8"
                    ds.selectorSlots[_selectorCount >> 3] = _selectorSlot;
                    _selectorSlot = 0;
                }
                _selectorCount++;
            }
        } 
        else {
            revert("l6");
        }
        return (_selectorCount, _selectorSlot);
    }

    function enforceHasContractCode(address _contract, string memory _errorMessage) internal view {
        uint256 contractSize;
        assembly {
            contractSize := extcodesize(_contract)
        }
        require(contractSize > 0, _errorMessage);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"bool","name":"createToken","type":"bool"},{"internalType":"address","name":"taxwallet","type":"address"},{"internalType":"address","name":"stakingFacet","type":"address"},{"internalType":"address","name":"presaleFacet","type":"address"},{"internalType":"address","name":"tokenFacet","type":"address"},{"internalType":"address","name":"v2router","type":"address"},{"internalType":"address","name":"team1","type":"address"},{"internalType":"address","name":"team2","type":"address"},{"internalType":"address","name":"team3","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"treasury","type":"address"},{"internalType":"uint256","name":"ethCost","type":"uint256"},{"internalType":"uint256","name":"deployyyyerCost","type":"uint256"},{"internalType":"uint256","name":"promoCostEth","type":"uint256"},{"internalType":"uint256","name":"promoCostDeployyyyer","type":"uint256"},{"internalType":"uint256","name":"minLiq","type":"uint256"},{"internalType":"address","name":"uniswapRouter","type":"address"},{"internalType":"address","name":"sushiswapRouter","type":"address"},{"internalType":"address","name":"pancakeswapRouter","type":"address"}],"internalType":"struct Deployyyyer.ConstructorArgs","name":"_args","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"uint256","name":"supply","type":"uint256"}],"name":"FactoryBuilt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"IncreasedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethCost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deployyyyerCost","type":"uint256"}],"name":"LaunchCostChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minLiq","type":"uint256"}],"name":"MinLiquidityChanged","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":"ethCost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deployyyyerCost","type":"uint256"}],"name":"PromoCostChanged","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"team1","type":"address"},{"internalType":"uint256","name":"team1p","type":"uint256"},{"internalType":"uint256","name":"cliffPeriod","type":"uint256"},{"internalType":"uint256","name":"vestingPeriod","type":"uint256"},{"internalType":"bool","name":"isAdd","type":"bool"}],"indexed":false,"internalType":"struct INewToken.TeamParams","name":"tparams","type":"tuple"}],"name":"TeamSet","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"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b5060405161175e38038061175e83398101604081905261002f91611100565b8051156100645760008051602061171e833981519152633b9aca00604051610057919061128f565b60405180910390a161008b565b60008051602061171e8339815191526000604051610082919061128f565b60405180910390a15b604080516000808252602082019092526100a6918491610ac5565b6100af33610c61565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f60209081527f699d9daa71b280d05a152715774afa0a81a312594b2d731d6b0b2552b7d6f69f805460ff1990811660019081179092557f65d510a5d8f7ef134ec444f7f34ee808c8eeb5177cdfd16be0c40fe1ab43369580548216831790557f5622121b47b8cd0120c4efe45dd5483242f54a3d49bd7679be565d47694918c38054821683179055634a17459160e11b6000527f70e699e155a5f76c229c88a52614e4bfee4370d1adc9e274e24a68bd8444e5cd8054821683179055604084810151601980546001600160a01b039283166001600160a01b0319918216179091556060870151601a8054919093169116179055600b80548316909317909255602880549091166012179055610160830151600481905561018084015160058190556101a08501516006556101c08501516007556101e0850151600c558251918252928101929092526000805160206116fe833981519152917f50a26e8dca4f83dd2f16abd63b83e3ead92dee6b429f357640259ec8ba34be6c910160405180910390a16006546007546040517f7d1222408c4cf98acbe36b7adf56d412889d6080cb5f5bcaf9508217eb7131639261029092908252602082015260400190565b60405180910390a1600c546040519081527f48a7da5840f3e4010850e8fb774b401fa2cfdaddbf403c198b367a681b021ca59060200160405180910390a16032805460ff60b81b19169055602080830151601680546001600160a01b039283166001600160a01b031991821617909155601780548216301790556080850151601b80549184169190921617905560a084015181166000908152918290526040808320805460ff1990811660019081179092556102008701518416855282852080548216831790556102208701518416855282852080548216831790556102408701519093168452922080549091169091179055815115610abd57600a602281905560026023819055602182905560258290556026556024556001601e556000601f81905560146020908155601d9190915560408051808201909152600b81526a2232b83637bcbcbcbcb2b960a91b91810191909152602a906103f29082611379565b506040805180820190915260068152654445504c4f5960d01b6020820152602b9061041d9082611379565b5060285461042f9060ff16600a611534565b61043d90633b9aca0061154a565b60298190556103e89061045190600161154a565b61045b9190611561565b602d5560295460649061046f90600161154a565b6104799190611561565b602e556014602c5560295460649061049290600261154a565b61049c9190611561565b602f556029546064906104b090600261154a565b6104ba9190611561565b6030556032805460ff60b01b1916600160b01b179055602954306000908152601460205260409081902091909155517f3e470cf1ec3767d0209f5128c840997ff9b70dfe0da263b3f94eb114a05d932790610522906002908190918252602082015260400190565b60405180910390a160295460405190815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36000601081905560115560295460649061058090600461154a565b61058a9190611561565b60c08301516001600160a01b03166000908152600d60205260409020556029546064906105b890600361154a565b6105c29190611561565b60e08301516001600160a01b03166000908152600d60205260409020556029546064906105f090600361154a565b6105fa9190611561565b6101008301516001600160a01b03166000908152600d602052604090205560295460649061062990600561154a565b6106339190611561565b6101208301516001600160a01b03166000908152600d602052604090205560295460649061066290600561154a565b61066c9190611561565b610140830180516001600160a01b039081166000908152600d6020908152604080832095909555610120870180518416835260128083528684208054600160ff199182168117909255925186168552601380855288862080548516831790558751871686528285528886208054851683179055965186168552868452878520805484168217905560c08a018051871686528285528886208054851683179055805187168652878552888620805485168317905560e08b018051881687528386528987208054861684179055518716865287855288862080548516831790556101008b01805188168752928552888620805485168317905591518616855295835292869020805490911685179055845160a08082018752925190931680845260048483019081526010548588019081526011546060808801918252608097880198895289519485529251948401949094525196820196909652905194810194909452915115159083015260008051602061173e833981519152910160405180910390a16040805160a08101825260e08401516001600160a01b031681526003602082015260105481830152601154606082015260016080820152905160008051602061173e8339815191529161087b9181516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260809182015115159181019190915260a00190565b60405180910390a16040805160a0810182526101008401516001600160a01b031681526003602082015260105481830152601154606082015260016080820152905160008051602061173e833981519152916109119181516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260809182015115159181019190915260a00190565b60405180910390a16040805160a0810182526101208401516001600160a01b031681526005602082015260105481830152601154606082015260016080820152905160008051602061173e833981519152916109a79181516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260809182015115159181019190915260a00190565b60405180910390a16040805160a0810182526101408401516001600160a01b031681526005602082015260105481830152601154606082015260016080820152905160008051602061173e83398151915291610a3d9181516001600160a01b0316815260208083015190820152604080830151908201526060808301519082015260809182015115159181019190915260a00190565b60405180910390a1602954606490610a5690601461154a565b610a609190611561565b600f5560a0820151603180546001600160a01b039092166001600160a01b03199283168117909155602954306000818152601560209081526040808320958352948152848220939093559081526002909152208054909116331790555b505050611617565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e546000805160206116fe8339815191529061ffff811690819060009060071615610b225750600381901c60009081526001840160205260409020545b60005b8751811015610ba557610b9883838a8481518110610b4557610b45611583565b6020026020010151600001518b8581518110610b6357610b63611583565b6020026020010151602001518c8681518110610b8157610b81611583565b602002602001015160400151610ce460201b60201c565b9093509150600101610b25565b50828214610bc15760028401805461ffff191661ffff84161790555b6007821615610be357600382901c600090815260018501602052604090208190555b6001600160a01b03861615610c245760405162461bcd60e51b81526020600482015260026024820152616c3160f01b60448201526064015b60405180910390fd5b845115610c585760405162461bcd60e51b8152602060048201526002602482015261361960f11b6044820152606401610c1b565b50505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b038481169182179093556040516000805160206116fe833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600080806000805160206116fe83398151915290506000845111610d2f5760405162461bcd60e51b81526020600482015260026024820152616c3360f01b6044820152606401610c1b565b6000856002811115610d4357610d43611599565b03610e7857610d7286604051806040016040528060028152602001611b0d60f21b815250610eb160201b60201c565b60005b8451811015610e72576000858281518110610d9257610d92611583565b6020908102919091018101516001600160e01b03198116600090815291859052604090912054909150606081901c15610df25760405162461bcd60e51b81526020600482015260026024820152616c3560f01b6044820152606401610c1b565b6001600160e01b031980831660008181526020879052604090206001600160601b031960608d901b168e17905560e060058e901b811692831c199c909c1690821c179a819003610e565760038c901c600090815260018601602052604081209b909b555b8b610e60816115af565b9c505060019093019250610d75915050565b50610ea5565b60405162461bcd60e51b8152602060048201526002602482015261361b60f11b6044820152606401610c1b565b50959694955050505050565b813b8181610ed25760405162461bcd60e51b8152600401610c1b91906115c8565b50505050565b634e487b7160e01b600052604160045260246000fd5b60405161026081016001600160401b0381118282101715610f1157610f11610ed8565b60405290565b604051606081016001600160401b0381118282101715610f1157610f11610ed8565b604051601f8201601f191681016001600160401b0381118282101715610f6157610f61610ed8565b604052919050565b60006001600160401b03821115610f8257610f82610ed8565b5060051b60200190565b80516001600160a01b0381168114610fa357600080fd5b919050565b80518015158114610fa357600080fd5b60006102608284031215610fcb57600080fd5b610fd3610eee565b9050610fde82610fa8565b8152610fec60208301610f8c565b6020820152610ffd60408301610f8c565b604082015261100e60608301610f8c565b606082015261101f60808301610f8c565b608082015261103060a08301610f8c565b60a082015261104160c08301610f8c565b60c082015261105260e08301610f8c565b60e0820152610100611065818401610f8c565b90820152610120611077838201610f8c565b90820152610140611089838201610f8c565b90820152610160828101519082015261018080830151908201526101a080830151908201526101c080830151908201526101e080830151908201526102006110d2818401610f8c565b908201526102206110e4838201610f8c565b908201526102406110f6838201610f8c565b9082015292915050565b600080610280838503121561111457600080fd5b82516001600160401b038082111561112b57600080fd5b818501915085601f83011261113f57600080fd5b8151602061115461114f83610f69565b610f39565b82815260059290921b8401810191818101908984111561117357600080fd5b8286015b848110156112715780518681111561118e57600080fd5b87016060818d03601f190112156111a457600080fd5b6111ac610f17565b6111b7868301610f8c565b81526040820151600381106111cb57600080fd5b818701526060820151888111156111e157600080fd5b8083019250508c603f8301126111f657600080fd5b8582015161120661114f82610f69565b81815260059190911b830160400190878101908f83111561122657600080fd5b6040850194505b8285101561125c5784516001600160e01b03198116811461124d57600080fd5b8252938801939088019061122d565b60408401525050845250918301918301611177565b509650611282905088888301610fb8565b9450505050509250929050565b6060815260006112ba60608301600b81526a2232b83637bcbcbcbcb2b960a91b602082015260400190565b82810360208401526112df8160068152654445504c4f5960d01b602082015260400190565b91505082604083015292915050565b600181811c9082168061130257607f821691505b60208210810361132257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611374576000816000526020600020601f850160051c810160208610156113515750805b601f850160051c820191505b818110156113705782815560010161135d565b5050505b505050565b81516001600160401b0381111561139257611392610ed8565b6113a6816113a084546112ee565b84611328565b602080601f8311600181146113db57600084156113c35750858301515b600019600386901b1c1916600185901b178555611370565b600085815260208120601f198616915b8281101561140a578886015182559484019460019091019084016113eb565b50858210156114285787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561148957816000190482111561146f5761146f611438565b8085161561147c57918102915b93841c9390800290611453565b509250929050565b6000826114a05750600161152e565b816114ad5750600061152e565b81600181146114c357600281146114cd576114e9565b600191505061152e565b60ff8411156114de576114de611438565b50506001821b61152e565b5060208310610133831016604e8410600b841016171561150c575081810a61152e565b611516838361144e565b806000190482111561152a5761152a611438565b0290505b92915050565b600061154360ff841683611491565b9392505050565b808202811582820484141761152e5761152e611438565b60008261157e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000600182016115c1576115c1611438565b5060010190565b60006020808352835180602085015260005b818110156115f6578581018301518582016040015282016115da565b506000604082860101526040601f19601f8301168501019250505092915050565b60d9806116256000396000f3fe608060405236600a57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819060601c8060805760405162461bcd60e51b8152602060048201526002602482015261533160f01b604482015260640160405180910390fd5b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea2646970667358221220e1c422b895f3ed3b2083b6e98ae66ddcf5050f45159879385136dda8e89e146864736f6c63430008170033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131ce28fd1bead94852c1ee968d92f0d870ec63780bcdd79d68c7d990619ab42210c67e3b136f8d98329b3ac411e1cee90cd3f43d8b1ac139de04f25f5a202599e9e00000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000716bdce29b0de1f5807d8259a8e10afeff7451ed000000000000000000000000f992610355f3c5fcc4bc300b0b9eb5b5ff037d2c000000000000000000000000516310567ff81b6663e8715182d83a5565e98ea000000000000000000000000076bfec03547673b84223d9fb4c02eb20ec021e070000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000046a3821214731c42aebd7a5eb9372832f4f7baab00000000000000000000000067ed4fddc48292d16d75feae525813539e5d4e7e000000000000000000000000ec40ca4a40e44846585af99ce86df8eafdc04c69000000000000000000000000b462553bf6354e094fc79be49e536270ec9c2c48000000000000000000000000a3c43e3c52589d70ffb9eab47e6618145e1a64c600000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000000069e10de76676d080000000000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000000000000000000000000a968163f0a57b400000000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d9e1ce17f2641f24ae83637ab66a2cca9c378b9f000000000000000000000000eff92a263d31888d860bd50809a8d171709b7b1c000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000007600000000000000000000000009c84288cb2c0fcad30f031ac1d4b1633ef994c63000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000c47040c859f8ac150d2908c5c1fb7335b8dde08d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000047ad46705000000000000000000000000000000000000000000000000000000009c02504a0000000000000000000000000000000000000000000000000000000066a0c39400000000000000000000000000000000000000000000000000000000d38bf890000000000000000000000000000000000000000000000000000000000000000000000000000000005a99bf51b70636e60bb825e79b3ca0b3cec8b1fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b0b45260e0000000000000000000000000000000000000000000000000000000048c54b9d0000000000000000000000000000000000000000000000000000000044ee3a1c00000000000000000000000000000000000000000000000000000000dde070e8000000000000000000000000000000000000000000000000000000005c89dfe10000000000000000000000000000000000000000000000000000000020ffb26d00000000000000000000000000000000000000000000000000000000af66394d000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000004839c8b3000000000000000000000000000000000000000000000000000000000d0da2d400000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000fa075514d738d2f0ce296b26b60c82dbaeca21f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000012d119db4c00000000000000000000000000000000000000000000000000000000d4eb329400000000000000000000000000000000000000000000000000000000a501ed8b0000000000000000000000000000000000000000000000000000000089807da400000000000000000000000000000000000000000000000000000000a2390f6900000000000000000000000000000000000000000000000000000000f39bb7d200000000000000000000000000000000000000000000000000000000353a9e7100000000000000000000000000000000000000000000000000000000d47875d0000000000000000000000000000000000000000000000000000000007ef92e02000000000000000000000000000000000000000000000000000000007ee100e900000000000000000000000000000000000000000000000000000000a99266470000000000000000000000000000000000000000000000000000000075c4745900000000000000000000000000000000000000000000000000000000742fbad6000000000000000000000000000000000000000000000000000000009ba39f940000000000000000000000000000000000000000000000000000000051ab87020000000000000000000000000000000000000000000000000000000077dc74f0000000000000000000000000000000000000000000000000000000008dd14802000000000000000000000000000000000000000000000000000000003674dd530000000000000000000000000000000000000000000000000000000000000000000000000000000076bfec03547673b84223d9fb4c02eb20ec021e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000101bbd3a2400000000000000000000000000000000000000000000000000000000b399563600000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000087fc38b00000000000000000000000000000000000000000000000000000000078f8484b0000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000b5660a1800000000000000000000000000000000000000000000000000000000ccec371600000000000000000000000000000000000000000000000000000000db7c4dda0000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000a9059cbb0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405236600a57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819060601c8060805760405162461bcd60e51b8152602060048201526002602482015261533160f01b604482015260640160405180910390fd5b3660008037600080366000845af43d6000803e808015609e573d6000f35b3d6000fdfea2646970667358221220e1c422b895f3ed3b2083b6e98ae66ddcf5050f45159879385136dda8e89e146864736f6c63430008170033

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

00000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000716bdce29b0de1f5807d8259a8e10afeff7451ed000000000000000000000000f992610355f3c5fcc4bc300b0b9eb5b5ff037d2c000000000000000000000000516310567ff81b6663e8715182d83a5565e98ea000000000000000000000000076bfec03547673b84223d9fb4c02eb20ec021e070000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d00000000000000000000000046a3821214731c42aebd7a5eb9372832f4f7baab00000000000000000000000067ed4fddc48292d16d75feae525813539e5d4e7e000000000000000000000000ec40ca4a40e44846585af99ce86df8eafdc04c69000000000000000000000000b462553bf6354e094fc79be49e536270ec9c2c48000000000000000000000000a3c43e3c52589d70ffb9eab47e6618145e1a64c600000000000000000000000000000000000000000000000006f05b59d3b200000000000000000000000000000000000000000000000069e10de76676d080000000000000000000000000000000000000000000000000000000b1a2bc2ec50000000000000000000000000000000000000000000000000a968163f0a57b400000000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000d9e1ce17f2641f24ae83637ab66a2cca9c378b9f000000000000000000000000eff92a263d31888d860bd50809a8d171709b7b1c000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002c000000000000000000000000000000000000000000000000000000000000004a000000000000000000000000000000000000000000000000000000000000007600000000000000000000000009c84288cb2c0fcad30f031ac1d4b1633ef994c63000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000c47040c859f8ac150d2908c5c1fb7335b8dde08d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000047ad46705000000000000000000000000000000000000000000000000000000009c02504a0000000000000000000000000000000000000000000000000000000066a0c39400000000000000000000000000000000000000000000000000000000d38bf890000000000000000000000000000000000000000000000000000000000000000000000000000000005a99bf51b70636e60bb825e79b3ca0b3cec8b1fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000b0b45260e0000000000000000000000000000000000000000000000000000000048c54b9d0000000000000000000000000000000000000000000000000000000044ee3a1c00000000000000000000000000000000000000000000000000000000dde070e8000000000000000000000000000000000000000000000000000000005c89dfe10000000000000000000000000000000000000000000000000000000020ffb26d00000000000000000000000000000000000000000000000000000000af66394d000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000004839c8b3000000000000000000000000000000000000000000000000000000000d0da2d400000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000fa075514d738d2f0ce296b26b60c82dbaeca21f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000012d119db4c00000000000000000000000000000000000000000000000000000000d4eb329400000000000000000000000000000000000000000000000000000000a501ed8b0000000000000000000000000000000000000000000000000000000089807da400000000000000000000000000000000000000000000000000000000a2390f6900000000000000000000000000000000000000000000000000000000f39bb7d200000000000000000000000000000000000000000000000000000000353a9e7100000000000000000000000000000000000000000000000000000000d47875d0000000000000000000000000000000000000000000000000000000007ef92e02000000000000000000000000000000000000000000000000000000007ee100e900000000000000000000000000000000000000000000000000000000a99266470000000000000000000000000000000000000000000000000000000075c4745900000000000000000000000000000000000000000000000000000000742fbad6000000000000000000000000000000000000000000000000000000009ba39f940000000000000000000000000000000000000000000000000000000051ab87020000000000000000000000000000000000000000000000000000000077dc74f0000000000000000000000000000000000000000000000000000000008dd14802000000000000000000000000000000000000000000000000000000003674dd530000000000000000000000000000000000000000000000000000000000000000000000000000000076bfec03547673b84223d9fb4c02eb20ec021e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000101bbd3a2400000000000000000000000000000000000000000000000000000000b399563600000000000000000000000000000000000000000000000000000000dd62ed3e00000000000000000000000000000000000000000000000000000000095ea7b30000000000000000000000000000000000000000000000000000000070a0823100000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000087fc38b00000000000000000000000000000000000000000000000000000000078f8484b0000000000000000000000000000000000000000000000000000000006fdde0300000000000000000000000000000000000000000000000000000000b5660a1800000000000000000000000000000000000000000000000000000000ccec371600000000000000000000000000000000000000000000000000000000db7c4dda0000000000000000000000000000000000000000000000000000000095d89b410000000000000000000000000000000000000000000000000000000018160ddd00000000000000000000000000000000000000000000000000000000a9059cbb0000000000000000000000000000000000000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _diamondCut (tuple[]): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput],System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [1] : _args (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]

-----Encoded View---------------
100 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000280
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 000000000000000000000000716bdce29b0de1f5807d8259a8e10afeff7451ed
Arg [3] : 000000000000000000000000f992610355f3c5fcc4bc300b0b9eb5b5ff037d2c
Arg [4] : 000000000000000000000000516310567ff81b6663e8715182d83a5565e98ea0
Arg [5] : 00000000000000000000000076bfec03547673b84223d9fb4c02eb20ec021e07
Arg [6] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [7] : 00000000000000000000000046a3821214731c42aebd7a5eb9372832f4f7baab
Arg [8] : 00000000000000000000000067ed4fddc48292d16d75feae525813539e5d4e7e
Arg [9] : 000000000000000000000000ec40ca4a40e44846585af99ce86df8eafdc04c69
Arg [10] : 000000000000000000000000b462553bf6354e094fc79be49e536270ec9c2c48
Arg [11] : 000000000000000000000000a3c43e3c52589d70ffb9eab47e6618145e1a64c6
Arg [12] : 00000000000000000000000000000000000000000000000006f05b59d3b20000
Arg [13] : 0000000000000000000000000000000000000000000069e10de76676d0800000
Arg [14] : 00000000000000000000000000000000000000000000000000b1a2bc2ec50000
Arg [15] : 000000000000000000000000000000000000000000000a968163f0a57b400000
Arg [16] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [17] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [18] : 000000000000000000000000d9e1ce17f2641f24ae83637ab66a2cca9c378b9f
Arg [19] : 000000000000000000000000eff92a263d31888d860bd50809a8d171709b7b1c
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [21] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [22] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [23] : 00000000000000000000000000000000000000000000000000000000000002c0
Arg [24] : 00000000000000000000000000000000000000000000000000000000000004a0
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000760
Arg [26] : 0000000000000000000000009c84288cb2c0fcad30f031ac1d4b1633ef994c63
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [28] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [30] : cdffacc600000000000000000000000000000000000000000000000000000000
Arg [31] : 52ef6b2c00000000000000000000000000000000000000000000000000000000
Arg [32] : adfca15e00000000000000000000000000000000000000000000000000000000
Arg [33] : 7a0ed62700000000000000000000000000000000000000000000000000000000
Arg [34] : 01ffc9a700000000000000000000000000000000000000000000000000000000
Arg [35] : 000000000000000000000000c47040c859f8ac150d2908c5c1fb7335b8dde08d
Arg [36] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [37] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [38] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [39] : 7ad4670500000000000000000000000000000000000000000000000000000000
Arg [40] : 9c02504a00000000000000000000000000000000000000000000000000000000
Arg [41] : 66a0c39400000000000000000000000000000000000000000000000000000000
Arg [42] : d38bf89000000000000000000000000000000000000000000000000000000000
Arg [43] : 0000000000000000000000005a99bf51b70636e60bb825e79b3ca0b3cec8b1fa
Arg [44] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [45] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [46] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [47] : 0b45260e00000000000000000000000000000000000000000000000000000000
Arg [48] : 48c54b9d00000000000000000000000000000000000000000000000000000000
Arg [49] : 44ee3a1c00000000000000000000000000000000000000000000000000000000
Arg [50] : dde070e800000000000000000000000000000000000000000000000000000000
Arg [51] : 5c89dfe100000000000000000000000000000000000000000000000000000000
Arg [52] : 20ffb26d00000000000000000000000000000000000000000000000000000000
Arg [53] : af66394d00000000000000000000000000000000000000000000000000000000
Arg [54] : 8da5cb5b00000000000000000000000000000000000000000000000000000000
Arg [55] : 4839c8b300000000000000000000000000000000000000000000000000000000
Arg [56] : 0d0da2d400000000000000000000000000000000000000000000000000000000
Arg [57] : f2fde38b00000000000000000000000000000000000000000000000000000000
Arg [58] : 000000000000000000000000fa075514d738d2f0ce296b26b60c82dbaeca21f4
Arg [59] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [60] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [61] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [62] : d119db4c00000000000000000000000000000000000000000000000000000000
Arg [63] : d4eb329400000000000000000000000000000000000000000000000000000000
Arg [64] : a501ed8b00000000000000000000000000000000000000000000000000000000
Arg [65] : 89807da400000000000000000000000000000000000000000000000000000000
Arg [66] : a2390f6900000000000000000000000000000000000000000000000000000000
Arg [67] : f39bb7d200000000000000000000000000000000000000000000000000000000
Arg [68] : 353a9e7100000000000000000000000000000000000000000000000000000000
Arg [69] : d47875d000000000000000000000000000000000000000000000000000000000
Arg [70] : 7ef92e0200000000000000000000000000000000000000000000000000000000
Arg [71] : 7ee100e900000000000000000000000000000000000000000000000000000000
Arg [72] : a992664700000000000000000000000000000000000000000000000000000000
Arg [73] : 75c4745900000000000000000000000000000000000000000000000000000000
Arg [74] : 742fbad600000000000000000000000000000000000000000000000000000000
Arg [75] : 9ba39f9400000000000000000000000000000000000000000000000000000000
Arg [76] : 51ab870200000000000000000000000000000000000000000000000000000000
Arg [77] : 77dc74f000000000000000000000000000000000000000000000000000000000
Arg [78] : 8dd1480200000000000000000000000000000000000000000000000000000000
Arg [79] : 3674dd5300000000000000000000000000000000000000000000000000000000
Arg [80] : 00000000000000000000000076bfec03547673b84223d9fb4c02eb20ec021e07
Arg [81] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [82] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [83] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [84] : 1bbd3a2400000000000000000000000000000000000000000000000000000000
Arg [85] : b399563600000000000000000000000000000000000000000000000000000000
Arg [86] : dd62ed3e00000000000000000000000000000000000000000000000000000000
Arg [87] : 095ea7b300000000000000000000000000000000000000000000000000000000
Arg [88] : 70a0823100000000000000000000000000000000000000000000000000000000
Arg [89] : 313ce56700000000000000000000000000000000000000000000000000000000
Arg [90] : 87fc38b000000000000000000000000000000000000000000000000000000000
Arg [91] : 78f8484b00000000000000000000000000000000000000000000000000000000
Arg [92] : 06fdde0300000000000000000000000000000000000000000000000000000000
Arg [93] : b5660a1800000000000000000000000000000000000000000000000000000000
Arg [94] : ccec371600000000000000000000000000000000000000000000000000000000
Arg [95] : db7c4dda00000000000000000000000000000000000000000000000000000000
Arg [96] : 95d89b4100000000000000000000000000000000000000000000000000000000
Arg [97] : 18160ddd00000000000000000000000000000000000000000000000000000000
Arg [98] : a9059cbb00000000000000000000000000000000000000000000000000000000
Arg [99] : 23b872dd00000000000000000000000000000000000000000000000000000000


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

Decentralized, fully on-chain crypto launchpad, with on chain launches of ERC20 tokens and Staking Pools.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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