Contract 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 4

Contract Overview

Balance:
0.001236 AVAX

AVAX Value:
$0.02 (@ $13.49/AVAX)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x636055646b444238d3e4c100429ebf1429c370bd1e23bb989207ce23c363637fCreate Node231598832022-12-03 11:56:402 mins ago0x187cff5dc9b27cf68b3e30f6b5f1bed98c8d51a9 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.001333056 26.5
0xf003dfd54a232f0b5f925c550577b240d8f791b8b9f412c5c29e50eefe1f12bbClaim231597352022-12-03 11:51:257 mins ago0x40e1f733b62558bb2643fa0991327574a409ed53 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.011654121242834 AVAX0.015172628 26.5
0x3d93e80d1a984d7312af310b208a30d09c0e932ba39570b899d877304d627780Compound231596842022-12-03 11:49:369 mins ago0x07b19c0782eb42a73d3eea5b35f66bbe3866beb8 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.008087058 26.5
0x3b5c33402d480dac8c4ee85785e2a21bbc22cc3d59d233680f494de4340b79f7Claim231595722022-12-03 11:45:4413 mins ago0xdd60748d1b2d711cfc92e2d1e344838fc6e32da7 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.015815155588536 AVAX0.018493186824 26.840035158
0x842c9750be87d6ce6e306c29c45f6c1e87c56056b061fbee6a1976b56a78ebddCompound231595662022-12-03 11:45:3213 mins ago0x3134579d12f370187f01d638a62076a4ed615794 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.005230411 26.5
0xf2d5c2632c4d5a6d08f24ee14baff4d00c7c3cc1d1390230e590da61f88dfd18Claim231594882022-12-03 11:42:5316 mins ago0xd4fea0eba43d0231bd9b05592924c39e63a42fa3 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.009125671414146 AVAX0.008306672124 27.2816825
0xbb5c8ae51cfee1265c15723804a859e4ff07b224b5f7ac8378109cc72e1af3f3Claim231594832022-12-03 11:42:4316 mins ago0xdd60748d1b2d711cfc92e2d1e344838fc6e32da7 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.016405457214734 AVAX0.018811429407 27.2816825
0xa9e2c2f18760ab2b161c263f26d595247a221e7381c55e286746b1b63169a5adClaim231594612022-12-03 11:41:5817 mins ago0xdd60748d1b2d711cfc92e2d1e344838fc6e32da7 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.016405457214734 AVAX0.018130172548 26.293675001
0x668b625ece3d563296de997bed29e6fa040a2270bf3dd1f461dd5635f5f9ea78Claim231594272022-12-03 11:40:5118 mins ago0x732be74426acfc5cb99ce3fc133918fdee1fa9c7 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.011485505759584 AVAX0.008068667 26.5
0x2b9ee9261dafcd0cb834ca76bb84b8ac6ec29a3a3c512576d4106b6ec655de77Claim231593512022-12-03 11:38:1820 mins ago0xae839bdab364bf0a3b0ca02507dd019031448fc0 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.011485042568997 AVAX0.008689023768 27.019957112
0xc7ee8d65369c2cf594687f80c50be3e33a37d5a853eaa9df1981f02861ff63ffClaim231593302022-12-03 11:37:3321 mins ago0x20d1091a482b788332cc4ccff402ca97eaeba7e7 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.011864828573161 AVAX0.004969282452 27.146835064
0xd51545000efad966483df7499af209948c5d6b1d0f37959eab9af93e840975ccClaim231593082022-12-03 11:36:4722 mins ago0x20d1091a482b788332cc4ccff402ca97eaeba7e7 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.021349805597877 AVAX0.004969282452 27.146835064
0x9c46bd53c4e10ac9ff88ace49507f49f154557c129d1d55ddbd1d25077c86c47Claim231592802022-12-03 11:35:5223 mins ago0x36562f23e8f8c957c27f662c8f8b42413ba610d6 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.011485416166983 AVAX0.00879588185 27.35225
0xd853d2d456f59961229e80b012543369d2dd12f7bb3144cbf38eca4ebdeb82dfClaim231592492022-12-03 11:34:4624 mins ago0xe6474a89e5271b6fc88c3db4e02e8300b4e1dadd IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.002631692946151 AVAX0.0047392627 27.35
0x1ce12891e32cedb6afbc5872505442d1a9109ced9a043fabe55b72c0b48a6ba8Compound231592272022-12-03 11:34:0025 mins ago0x80ce10bbc76361018dc40d0a7591ff760da0822d IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.008085371557 27.305205
0x433deafd9207b821742eb7c4bf14b74f476be2ba9beb7b92ba4fa5166ea6c0feClaim231591892022-12-03 11:32:4426 mins ago0xc857944f1ffa27cb234042f9e72a1ba46b3a90e8 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.01673144801428 AVAX0.008521817 26.5
0x70e1fd6ac2d92686318f59c9c018b9ccd7e6554582808c24beeddef70101333eCompound231590902022-12-03 11:29:2229 mins ago0xdc33cfe5ca6346d808d98e2b90d21ff3f8c2e344 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.00542778527.5
0x40e97df1f25740a1185622f974b01e0acd633c2d045b51151becef2ecc5a62d9Compound231590842022-12-03 11:29:0729 mins ago0x8aaa3e8442f2e41d9c103ee74c6c4288e12a04a4 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.0069255895 26.5
0x696090fd43e40ffee6a87eb9eb88e7909556657029f0fde13a6c1cc48b4f1013Claim231590522022-12-03 11:28:0430 mins ago0xd02082678a48ff7d53ef22f312c911f18595ee2f IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.013127913970863 AVAX0.004708467 26.5
0xc1a2380f1f77c9a210f20a7ac1ed598577ae758e3062c4e35920619c644eb669Claim231587382022-12-03 11:17:3041 mins ago0xb8bc41cf88ce4ce12bde4f610dc8e962a383f869 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900.000240370931932 AVAX0.0095144275 26.5
0x53724ac267728a284b359c50d3bb88a914178ab9051db3145bf60f5bb8d9ece4Compound231584122022-12-03 11:06:2252 mins ago0x8fcc6548de7c4a1e5f5c196de1b62c423e61cdaf IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.007100017811 26.682567725
0x5bf17648eaf3513072c991c1118388ae23afdf897e35ab2e62702d37a01cd7feCompound231582742022-12-03 11:01:4357 mins ago0x6221d23e2aecefe15cff2f87b8387bce6b69e646 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.01514463995 27.35225
0x8e97e567bf643430cd091a172130b4257b58260ab08b2c9200d34f80e8a10972Migrate Nodes231582272022-12-03 11:00:0858 mins ago0x23d06efac9092d42803e259d73318bd837a54226 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.0097376635 26.5
0x7f20ef2bec78bebacc99a9b74bf2c90d75ae17c731d0a625dc06ccf4d514180fCompound231579342022-12-03 10:50:121 hr 8 mins ago0xc57058d2759dbe7169a49a85bcfc61146d139b60 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.003847573749 27.082430012
0xdbc2a6caf3fc143cbee935b2cd87710684291467b46a1dbd1659c84d160aa46cCompound231576802022-12-03 10:41:351 hr 17 mins ago0x2444c4312f196e4d37e22058b5cd81985e261473 IN  0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa900 AVAX0.0255380765 26.5
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xf003dfd54a232f0b5f925c550577b240d8f791b8b9f412c5c29e50eefe1f12bb231597352022-12-03 11:51:257 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.011654121242834141 AVAX
0x3b5c33402d480dac8c4ee85785e2a21bbc22cc3d59d233680f494de4340b79f7231595722022-12-03 11:45:4413 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.015815155588536287 AVAX
0xf2d5c2632c4d5a6d08f24ee14baff4d00c7c3cc1d1390230e590da61f88dfd18231594882022-12-03 11:42:5316 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.009125671414146197 AVAX
0xbb5c8ae51cfee1265c15723804a859e4ff07b224b5f7ac8378109cc72e1af3f3231594832022-12-03 11:42:4316 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.016405457214734748 AVAX
0xa9e2c2f18760ab2b161c263f26d595247a221e7381c55e286746b1b63169a5ad231594612022-12-03 11:41:5817 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.016405457214734748 AVAX
0x668b625ece3d563296de997bed29e6fa040a2270bf3dd1f461dd5635f5f9ea78231594272022-12-03 11:40:5118 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.011485505759584088 AVAX
0x2b9ee9261dafcd0cb834ca76bb84b8ac6ec29a3a3c512576d4106b6ec655de77231593512022-12-03 11:38:1820 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.011485042568997122 AVAX
0xc7ee8d65369c2cf594687f80c50be3e33a37d5a853eaa9df1981f02861ff63ff231593302022-12-03 11:37:3321 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.011864828573161009 AVAX
0xd51545000efad966483df7499af209948c5d6b1d0f37959eab9af93e840975cc231593082022-12-03 11:36:4722 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.02134980559787757 AVAX
0x9c46bd53c4e10ac9ff88ace49507f49f154557c129d1d55ddbd1d25077c86c47231592802022-12-03 11:35:5223 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.011485416166983035 AVAX
0xd853d2d456f59961229e80b012543369d2dd12f7bb3144cbf38eca4ebdeb82df231592492022-12-03 11:34:4624 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.00263169294615166 AVAX
0x433deafd9207b821742eb7c4bf14b74f476be2ba9beb7b92ba4fa5166ea6c0fe231591892022-12-03 11:32:4426 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.016731448014280716 AVAX
0x696090fd43e40ffee6a87eb9eb88e7909556657029f0fde13a6c1cc48b4f1013231590522022-12-03 11:28:0430 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.013127913970863615 AVAX
0xc1a2380f1f77c9a210f20a7ac1ed598577ae758e3062c4e35920619c644eb669231587382022-12-03 11:17:3041 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.000240370931932553 AVAX
0x075f475099dc5ae520b3501de8b7c3276926616ba39ccd63c437b5825a2dbbf8231571322022-12-03 10:22:431 hr 36 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.031879158486792235 AVAX
0xbe713afcb790bba0aa4d0f65ddad20a0132f75c90c94c74e79ebcf29faa97f58231564582022-12-03 9:59:251 hr 59 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.020111321451554749 AVAX
0xf74c7d91824806a7d8eb9c4afb00129505c426511dfafefd9782c4a2e3ca0dc9231562062022-12-03 9:50:432 hrs 8 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.120952479697998657 AVAX
0x7630ffe424e30af7e79bffec68d3ecc0f9161bf86dba6c3f664b1ef06bd3c8ee231561952022-12-03 9:50:222 hrs 8 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.094342953305532318 AVAX
0xebf2589b4a50ab10fa85c31142446601c62b66062e8a493c1df98822a6bf5db2231561852022-12-03 9:49:542 hrs 9 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.094343306898773074 AVAX
0x1b5c81bd071d0436038b5435a24631099d856aab8e451518f0387bb5bb4fd6a5231561622022-12-03 9:49:072 hrs 9 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.061843033909813994 AVAX
0x54f8ce9bad9739fd0826c29ca0732ba5cfd850f8853383ca0961a251b010ee09231554292022-12-03 9:24:062 hrs 34 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.005048341537309804 AVAX
0xf553e70d5a8ab93889bb4726089ec1d922b7572d811533eef45af2f5aace7b1b231551872022-12-03 9:15:442 hrs 43 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.00504910452713601 AVAX
0x10d19d4d186d844578130b5b52453c400a3310e46a07e621f39292c1d49a6027231551312022-12-03 9:13:522 hrs 45 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.006889759391005857 AVAX
0x16fad8044d6f5e6f14a860543d6b7ad4e78829c79c9d14960dd1c6dab3231d60231550072022-12-03 9:09:412 hrs 49 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.006889759391005857 AVAX
0x1c1429469798804fbb251fe8523854e0f85248b30ec4117bd75448eca0a43069231540502022-12-03 8:37:003 hrs 22 mins ago 0x0efc8ef83d7318121449e9c5dbdf7135bcc1fa90 0xa7a0579fe6d6f258106c8d5d3830c3ec913b32960.006581507378657333 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VaporNodesDiamond

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : VaporNodesDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import "clouds/contracts/interfaces/IDiamondCut.sol";
import "clouds/contracts/LDiamond.sol";
import "./libraries/AppStorage.sol";

error VaporNodesDiamond__InvalidFunction();

/// @title VaporNodesDiamond
/// @author Modified from Nick Mudge: https://github.com/mudgen/diamond-3-hardhat
/// @notice Main contract of the diamond
/// @dev Utilizes 'IDiamondCut', 'LDiamond' and 'AppStorage'
contract VaporNodesDiamond {
    ///////////////////
    /// APP STORAGE ///
    ///////////////////

    AppStorage s;

    /////////////
    /// LOGIC ///
    /////////////

    constructor(address _owner, address _diamondCutFacet) payable {
        LDiamond.updateContractOwner(_owner);

        IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](1);

        bytes4[] memory functionSelectors = new bytes4[](1);

        functionSelectors[0] = IDiamondCut.diamondCut.selector;
        cut[0] = IDiamondCut.FacetCut({
            facetAddress: _diamondCutFacet,
            action: IDiamondCut.FacetCutAction.Add,
            functionSelectors: functionSelectors
        });

        LDiamond.diamondCut(cut, address(0), "");

        s.deployedAt = block.timestamp;
    }

    fallback() external payable {
        LDiamond.DiamondStorage storage ds;

        bytes32 position = LDiamond.DIAMOND_STORAGE_POSITION;

        assembly {
            ds.slot := position
        }

        address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;

        if (facet == address(0)) revert VaporNodesDiamond__InvalidFunction();

        assembly {
            calldatacopy(0, 0, calldatasize())

            let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)

            returndatacopy(0, 0, returndatasize())

            switch result
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    receive() external payable {}
}

File 2 of 4 : AppStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

////////////
/// NODE ///
////////////

struct Node {
    string name;
    ///
    uint256 creation;
    uint256 lastClaimTime;
    ///
    uint256 amount;
    uint256 rewardPaid;
    ///
    bool active;
}

///////////////
/// ROYALTY ///
///////////////

struct RoyaltyInfo {
    address recipient;
    uint256 bps;
}

////////////
/// MATH ///
////////////

enum Rounding {
    Down,
    Up,
    Zero
}

///////////////////
/// APP STORAGE ///
///////////////////

struct AppStorage {
    ////////////////////
    /// AUTHORIZABLE ///
    ////////////////////
    mapping(address => bool) authorized;
    ////////////////
    /// PAUSABLE ///
    ////////////////
    bool paused;
    ///////////////
    /// REWARDS ///
    ///////////////
    uint256 accumulatedRewardPerShare;
    uint256 ACCUMULATED_REWARD_PER_SHARE_PRECISION;
    uint256 lastRewardBalance;
    ///////////////
    /// GENERAL ///
    ///////////////
    address vpnd;
    address wavax;
    address stratosphere;
    address rewardsPool;
    address nodeStorage;
    address treasury;
    address referralController;
    ///
    uint256 deployedAt;
    uint256 tvl;
    uint256 balance; // TODO: Do we need this? Seems duplicated of 'lastRewardBalance'
    uint256 dailyReception;
    uint256 txCounter;
    mapping(uint256 => uint256) balances;
    mapping(uint256 => uint256) dailyReceptions;
    /////////////
    /// NODES ///
    /////////////
    uint256 minNodeAmount;
    uint256 maxNodesPerWallet;
    mapping(uint256 => Node) nodeByTokenId;
    /////////////////
    /// MIGRATION ///
    /////////////////
    uint256 totalNodesCreated;
    uint256 totalNodesMigrated;
    mapping(address => bool) alreadyMigrated;
    /////////////
    /// TAXES ///
    /////////////
    uint256 claimFee;
    uint256 compoundFee;
    uint256 depositFee;
    uint256 quoteSlippagePct;
    address dexRouter;
    //////////////
    /// ERC721 ///
    //////////////
    string baseURI;
    string name;
    string symbol;
    bool isTransferable;
    mapping(address => uint256) tokenBalances;
    mapping(uint256 => address) tokenOwners;
    mapping(uint256 => address) tokenApprovals;
    mapping(address => mapping(address => bool)) operatorApprovals;
    /////////////////////////
    /// ERC721 ENUMERABLE ///
    /////////////////////////
    mapping(address => mapping(uint256 => uint256)) ownedTokens;
    mapping(uint256 => uint256) ownedTokensIndex;
    uint256[] allTokens;
    mapping(uint256 => uint256) allTokensIndex;
    /////////////////
    /// ROYALTIES ///
    /////////////////
    address royaltyRecipient;
    uint16 royaltyBps;
    mapping(uint256 => RoyaltyInfo) royaltyInfoForToken;
}

File 3 of 4 : LDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import "./interfaces/IDiamondCut.sol";

error IDiamondCut__AddressMustBeZero();
error IDiamondCut__FunctionAlreadyExists();
error IDiamondCut__ImmutableFunction();
error IDiamondCut__IncorrectAction();
error IDiamondCut__InexistentFacetCode();
error IDiamondCut__InexistentFunction();
error IDiamondCut__InvalidAddressZero();
error IDiamondCut__InvalidReplacementWithSameFunction();
error IDiamondCut__NoSelectors();

error LDiamond__InitializationFailed(
  address _initializationContractAddress,
  bytes _data
);
error LDiamond__OnlyOwner();

/// @title LDiamond
/// @author mektigboy
/// @author Modified from Nick Mudge: https://github.com/mudgen/diamond-3-hardhat
/// @notice Diamond library
/// @dev EIP-2535 "Diamond" standard
library LDiamond {
  //////////////
  /// EVENTS ///
  //////////////

  event DiamondCut(IDiamondCut.FacetCut[] _cut, address _init, bytes _data);

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

  ///////////////
  /// STORAGE ///
  ///////////////

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

  struct FacetAddressAndPosition {
    /// @notice Facet address
    address facetAddress;
    /// @notice Facet position in 'facetFunctionSelectors.functionSelectors' array
    uint96 functionSelectorPosition;
  }

  struct FacetFunctionSelectors {
    /// @notice Function selectors
    bytes4[] functionSelectors;
    /// @notice Position of 'facetAddress' in 'facetAddresses' array
    uint256 facetAddressPosition;
  }

  struct DiamondStorage {
    /// @notice Position of selector in 'facetFunctionSelectors.selectors' array
    mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
    /// @notice Facet addresses to function selectors
    mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
    /// @notice Facet addresses
    address[] facetAddresses;
    /// @notice Query if contract implements an interface
    mapping(bytes4 => bool) supportedInterfaces;
    /// @notice Owner of contract
    address owner;
  }

  /////////////
  /// LOGIC ///
  /////////////

  /// @notice ...
  function diamondStorage() internal pure returns (DiamondStorage storage ds) {
    bytes32 position = DIAMOND_STORAGE_POSITION;

    assembly {
      ds.slot := position
    }
  }

  /// @notice ...
  /// @param _owner New owner
  function updateContractOwner(address _owner) internal {
    DiamondStorage storage ds = diamondStorage();

    address oldOwner = ds.owner;

    ds.owner = _owner;

    emit OwnershipTransferred(oldOwner, _owner);
  }

  /// @notice ...
  function contractOwner() internal view returns (address owner_) {
    owner_ = diamondStorage().owner;
  }

  /// @notice ...
  function enforceIsOwner() internal view {
    if (diamondStorage().owner != msg.sender) revert LDiamond__OnlyOwner();
  }

  /// @notice ...
  /// @param _cut ...
  /// @param _init ...
  /// @param _data ...
  function diamondCut(
    IDiamondCut.FacetCut[] memory _cut,
    address _init,
    bytes memory _data
  ) internal {
    for (uint256 facetIndex; facetIndex < _cut.length; ++facetIndex) {
      IDiamondCut.FacetCutAction action = _cut[facetIndex].action;

      if (action == IDiamondCut.FacetCutAction.Add) {
        addFunctions(
          _cut[facetIndex].facetAddress,
          _cut[facetIndex].functionSelectors
        );
      } else if (action == IDiamondCut.FacetCutAction.Replace) {
        replaceFunctions(
          _cut[facetIndex].facetAddress,
          _cut[facetIndex].functionSelectors
        );
      } else if (action == IDiamondCut.FacetCutAction.Remove) {
        removeFunctions(
          _cut[facetIndex].facetAddress,
          _cut[facetIndex].functionSelectors
        );
      } else {
        revert IDiamondCut__IncorrectAction();
      }
    }

    emit DiamondCut(_cut, _init, _data);

    initializeDiamondCut(_init, _data);
  }

  /// @notice ...
  /// @param _facet Facet address
  /// @param _selectors Facet selectors
  function addFunctions(address _facet, bytes4[] memory _selectors) internal {
    if (_selectors.length == 0) revert IDiamondCut__NoSelectors();

    DiamondStorage storage ds = diamondStorage();

    if (_facet == address(0)) revert IDiamondCut__InvalidAddressZero();

    uint96 selectorPosition = uint96(
      ds.facetFunctionSelectors[_facet].functionSelectors.length
    );

    /// @notice Add new facet address if it does not exists already

    if (selectorPosition == 0) {
      addFacet(ds, _facet);
    }

    for (
      uint256 selectorIndex;
      selectorIndex < _selectors.length;
      ++selectorIndex
    ) {
      bytes4 selector = _selectors[selectorIndex];
      address oldFacetAddress = ds
        .selectorToFacetAndPosition[selector]
        .facetAddress;

      if (oldFacetAddress != address(0))
        revert IDiamondCut__FunctionAlreadyExists();

      addFunction(ds, selector, selectorPosition, _facet);

      ++selectorPosition;
    }
  }

  /// @notice ...
  /// @param _facet Facet address
  /// @param _selectors Facet selectors
  function replaceFunctions(address _facet, bytes4[] memory _selectors)
    internal
  {
    if (_selectors.length == 0) revert IDiamondCut__NoSelectors();

    DiamondStorage storage ds = diamondStorage();

    if (_facet == address(0)) revert IDiamondCut__InvalidAddressZero();

    uint96 selectorPosition = uint96(
      ds.facetFunctionSelectors[_facet].functionSelectors.length
    );

    /// @notice Add new facet address if it does not exists already

    if (selectorPosition == 0) {
      addFacet(ds, _facet);
    }
    for (
      uint256 selectorIndex;
      selectorIndex < _selectors.length;
      ++selectorIndex
    ) {
      bytes4 selector = _selectors[selectorIndex];
      address oldFacetAddress = ds
        .selectorToFacetAndPosition[selector]
        .facetAddress;

      if (oldFacetAddress == _facet)
        revert IDiamondCut__InvalidReplacementWithSameFunction();

      removeFunction(ds, oldFacetAddress, selector);
      addFunction(ds, selector, selectorPosition, _facet);

      ++selectorPosition;
    }
  }

  /// @notice ...
  /// @param _facet Facet address
  /// @param _selectors Facet selectors
  function removeFunctions(address _facet, bytes4[] memory _selectors)
    internal
  {
    if (_selectors.length == 0) revert IDiamondCut__NoSelectors();

    DiamondStorage storage ds = diamondStorage();

    if (_facet != address(0)) revert IDiamondCut__AddressMustBeZero();

    for (
      uint256 selectorIndex;
      selectorIndex < _selectors.length;
      ++selectorIndex
    ) {
      bytes4 selector = _selectors[selectorIndex];
      address oldFacetAddress = ds
        .selectorToFacetAndPosition[selector]
        .facetAddress;

      removeFunction(ds, oldFacetAddress, selector);
    }
  }

  /// @notice ...
  /// @param ds DiamondStorage
  /// @param _facet Facet address
  function addFacet(DiamondStorage storage ds, address _facet) internal {
    enforceHasContractCode(_facet);

    ds.facetFunctionSelectors[_facet].facetAddressPosition = ds
      .facetAddresses
      .length;
    ds.facetAddresses.push(_facet);
  }

  /// @notice ...
  /// @param ds DiamondStorage
  /// @param _selector Facet selector
  /// @param _positon Selector position
  /// @param _facet Facet address
  function addFunction(
    DiamondStorage storage ds,
    bytes4 _selector,
    uint96 _positon,
    address _facet
  ) internal {
    ds
      .selectorToFacetAndPosition[_selector]
      .functionSelectorPosition = _positon;
    ds.facetFunctionSelectors[_facet].functionSelectors.push(_selector);
    ds.selectorToFacetAndPosition[_selector].facetAddress = _facet;
  }

  /// @notice ...
  /// @param ds DiamondStorage
  /// @param _facet Facet address
  /// @param _selector Facet address
  function removeFunction(
    DiamondStorage storage ds,
    address _facet,
    bytes4 _selector
  ) internal {
    if (_facet == address(0)) revert IDiamondCut__InexistentFunction();

    /// @notice An immutable function is defined directly in diamond
    if (_facet == address(this)) revert IDiamondCut__ImmutableFunction();

    /// @notice Replaces selector with last selector, then deletes last selector
    uint256 selectorPosition = ds
      .selectorToFacetAndPosition[_selector]
      .functionSelectorPosition;
    uint256 lastSelectorPosition = ds
      .facetFunctionSelectors[_facet]
      .functionSelectors
      .length - 1;

    /// @notice Replaces '_selector' with 'lastSelector' if not they are not the same
    if (selectorPosition != lastSelectorPosition) {
      bytes4 lastSelector = ds.facetFunctionSelectors[_facet].functionSelectors[
        lastSelectorPosition
      ];
      ds.facetFunctionSelectors[_facet].functionSelectors[
        selectorPosition
      ] = lastSelector;
      ds
        .selectorToFacetAndPosition[lastSelector]
        .functionSelectorPosition = uint96(selectorPosition);
    }

    /// @notice Deletes last selector

    ds.facetFunctionSelectors[_facet].functionSelectors.pop();

    delete ds.selectorToFacetAndPosition[_selector];

    /// @notice Deletes facet address if there are no more selectors for facet address
    if (lastSelectorPosition == 0) {
      /// @notice Replaces facet address with last facet address, deletes last facet address
      uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;
      uint256 facetAddressPosition = ds
        .facetFunctionSelectors[_facet]
        .facetAddressPosition;

      if (facetAddressPosition != lastFacetAddressPosition) {
        address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];
        ds.facetAddresses[facetAddressPosition] = lastFacetAddress;
        ds
          .facetFunctionSelectors[lastFacetAddress]
          .facetAddressPosition = facetAddressPosition;
      }

      ds.facetAddresses.pop();

      delete ds.facetFunctionSelectors[_facet].facetAddressPosition;
    }
  }

  /// @notice ...
  /// @param _init ...
  /// @param _data ...
  function initializeDiamondCut(address _init, bytes memory _data) internal {
    if (_init == address(0)) {
      return;
    }

    enforceHasContractCode(_init);

    (bool success, bytes memory error) = _init.delegatecall(_data);

    if (!success) {
      if (error.length > 0) {
        /// @solidity memory-safe-assembly
        assembly {
          let dataSize := mload(error)

          revert(add(32, error), dataSize)
        }
      } else {
        revert LDiamond__InitializationFailed(_init, _data);
      }
    }
  }

  /// @notice ...
  /// @param _contract Contract address
  function enforceHasContractCode(address _contract) internal view {
    uint256 contractSize;

    assembly {
      contractSize := extcodesize(_contract)
    }

    if (contractSize == 0) revert IDiamondCut__InexistentFacetCode();
  }
}

File 4 of 4 : IDiamondCut.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

/// @title IDiamondCut
/// @author mektigboy
/// @author Modified from Nick Mudge: https://github.com/mudgen/diamond-3-hardhat
/// @dev EIP-2535 "Diamond" standard
interface IDiamondCut {
    //////////////
    /// EVENTS ///
    //////////////

    event DiamondCut(FacetCut[] _cut, address _init, bytes _data);

    ///////////////
    /// STORAGE ///
    ///////////////

    /// ACTIONS

    /// Add     - 0
    /// Replace - 1
    /// Remove  - 2

    enum FacetCutAction {
        Add,
        Replace,
        Remove
    }

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

    /// @param _cut Facet addreses and function selectors
    /// @param _init Address of contract or facet to execute _data
    /// @param _data Function call, includes function selector and arguments
    function diamondCut(
        FacetCut[] calldata _cut,
        address _init,
        bytes calldata _data
    ) external;
}

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_diamondCutFacet","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"IDiamondCut__AddressMustBeZero","type":"error"},{"inputs":[],"name":"IDiamondCut__FunctionAlreadyExists","type":"error"},{"inputs":[],"name":"IDiamondCut__ImmutableFunction","type":"error"},{"inputs":[],"name":"IDiamondCut__IncorrectAction","type":"error"},{"inputs":[],"name":"IDiamondCut__InexistentFacetCode","type":"error"},{"inputs":[],"name":"IDiamondCut__InexistentFunction","type":"error"},{"inputs":[],"name":"IDiamondCut__InvalidAddressZero","type":"error"},{"inputs":[],"name":"IDiamondCut__InvalidReplacementWithSameFunction","type":"error"},{"inputs":[],"name":"IDiamondCut__NoSelectors","type":"error"},{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"LDiamond__InitializationFailed","type":"error"},{"inputs":[],"name":"VaporNodesDiamond__InvalidFunction","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

6080604052604051620037b6380380620037b6833981810160405281019062000029919062001717565b6200003f826200020160201b6200015e1760201c565b6000600167ffffffffffffffff8111156200005f576200005e6200175e565b5b6040519080825280602002602001820160405280156200009c57816020015b6200008862001661565b8152602001906001900390816200007e5790505b5090506000600167ffffffffffffffff811115620000bf57620000be6200175e565b5b604051908082528060200260200182016040528015620000ee5781602001602082028036833780820191505090505b509050631f931c1c60e01b8160008151811062000110576200010f6200178d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001600060028111156200019a5762000199620017bc565b5b81526020018281525082600081518110620001ba57620001b96200178d565b5b6020026020010181905250620001ed82600060405180602001604052806000815250620002e060201b620002351760201c565b426000600c01819055505050505062001d33565b6000620002136200055760201b60201c565b905060008160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60005b8351811015620005025760008482815181106200030557620003046200178d565b5b6020026020010151602001519050600060028111156200032a5762000329620017bc565b5b81600281111562000340576200033f620017bc565b5b03620003a0576200039a85838151811062000360576200035f6200178d565b5b6020026020010151600001518684815181106200038257620003816200178d565b5b6020026020010151604001516200058460201b60201c565b620004ed565b60016002811115620003b757620003b6620017bc565b5b816002811115620003cd57620003cc620017bc565b5b036200042d5762000427858381518110620003ed57620003ec6200178d565b5b6020026020010151600001518684815181106200040f576200040e6200178d565b5b6020026020010151604001516200080160201b60201c565b620004ec565b600280811115620004435762000442620017bc565b5b816002811115620004595762000458620017bc565b5b03620004b957620004b38583815181106200047957620004786200178d565b5b6020026020010151600001518684815181106200049b576200049a6200178d565b5b60200260200101516040015162000a9060201b60201c565b620004eb565b6040517ff51092d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5080620004fa9062001824565b9050620002e3565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620005389392919062001b9e565b60405180910390a162000552828262000c2060201b60201c565b505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b6000815103620005c0576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620005d26200055760201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200063b576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff1603620006b157620006b0828562000d3a60201b60201c565b5b60005b8351811015620007fa576000848281518110620006d657620006d56200178d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620007c2576040517f98aaaded00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620007d68583868a62000e0460201b60201c565b83620007e29062001c01565b9350505080620007f29062001824565b9050620006b4565b5050505050565b60008151036200083d576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006200084f6200055760201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008b8576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036200092e576200092d828562000d3a60201b60201c565b5b60005b835181101562000a895760008482815181106200095357620009526200178d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000a3e576040517f25a7744900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000a5185828462000fb160201b60201c565b62000a658583868a62000e0460201b60201c565b8362000a719062001c01565b935050508062000a819062001824565b905062000931565b5050505050565b600081510362000acc576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062000ade6200055760201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000b47576040517f2d7466a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101562000c1a57600083828151811062000b6c5762000b6b6200178d565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000c0484828462000fb160201b60201c565b50508062000c129062001824565b905062000b4a565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16031562000d365762000c67826200161c60201b60201c565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405162000c91919062001c7c565b600060405180830381855af49150503d806000811462000cce576040519150601f19603f3d011682016040523d82523d6000602084013e62000cd3565b606091505b50915091508162000d335760008151111562000cf25780518082602001fd5b83836040517fffdd9bd500000000000000000000000000000000000000000000000000000000815260040162000d2a92919062001c95565b60405180910390fd5b50505b5050565b62000d4b816200161c60201b60201c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362001018576040517f716f7e6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200107e576040517f1c48b19a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905062001157919062001cc9565b9050808214620012f25760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110620011bc57620011bb6200178d565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106200123b576200123a6200178d565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548062001349576200134862001d04565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103620016155760006001866002018054905062001436919062001cc9565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146200157e576000876002018381548110620014a457620014a36200178d565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080886002018381548110620014eb57620014ea6200178d565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b8660020180548062001595576200159462001d04565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000813b9050600081036200165d576040517f72978b6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115620016a0576200169f620017bc565b5b8152602001606081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620016df82620016b2565b9050919050565b620016f181620016d2565b8114620016fd57600080fd5b50565b6000815190506200171181620016e6565b92915050565b60008060408385031215620017315762001730620016ad565b5b6000620017418582860162001700565b9250506020620017548582860162001700565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062001831826200181a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620018665762001865620017eb565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b620018a881620016d2565b82525050565b60038110620018c257620018c1620017bc565b5b50565b6000819050620018d582620018ae565b919050565b6000620018e782620018c5565b9050919050565b620018f981620018da565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62001962816200192b565b82525050565b600062001976838362001957565b60208301905092915050565b6000602082019050919050565b60006200199c82620018ff565b620019a881856200190a565b9350620019b5836200191b565b8060005b83811015620019ec578151620019d0888262001968565b9750620019dd8362001982565b925050600181019050620019b9565b5085935050505092915050565b600060608301600083015162001a1360008601826200189d565b50602083015162001a286020860182620018ee565b506040830151848203604086015262001a4282826200198f565b9150508091505092915050565b600062001a5d8383620019f9565b905092915050565b6000602082019050919050565b600062001a7f8262001871565b62001a8b81856200187c565b93508360208202850162001a9f856200188d565b8060005b8581101562001ae1578484038952815162001abf858262001a4f565b945062001acc8362001a65565b925060208a0199505060018101905062001aa3565b50829750879550505050505092915050565b62001afe81620016d2565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562001b4057808201518184015260208101905062001b23565b60008484015250505050565b6000601f19601f8301169050919050565b600062001b6a8262001b04565b62001b76818562001b0f565b935062001b8881856020860162001b20565b62001b938162001b4c565b840191505092915050565b6000606082019050818103600083015262001bba818662001a72565b905062001bcb602083018562001af3565b818103604083015262001bdf818462001b5d565b9050949350505050565b60006bffffffffffffffffffffffff82169050919050565b600062001c0e8262001be9565b91506bffffffffffffffffffffffff820362001c2f5762001c2e620017eb565b5b600182019050919050565b600081905092915050565b600062001c528262001b04565b62001c5e818562001c3a565b935062001c7081856020860162001b20565b80840191505092915050565b600062001c8a828462001c45565b915081905092915050565b600060408201905062001cac600083018562001af3565b818103602083015262001cc0818462001b5d565b90509392505050565b600062001cd6826200181a565b915062001ce3836200181a565b925082820390508181111562001cfe5762001cfd620017eb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b611a738062001d436000396000f3fe60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610138576040517f2dda0b3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660008037600080366000845af43d6000803e8060008114610159573d6000f35b3d6000fd5b6000610168610459565b905060008160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60005b835181101561040e576000848281518110610256576102556114c3565b5b602002602001015160200151905060006002811115610278576102776114f2565b5b81600281111561028b5761028a6114f2565b5b036102db576102d68583815181106102a6576102a56114c3565b5b6020026020010151600001518684815181106102c5576102c46114c3565b5b602002602001015160400151610486565b6103fc565b600160028111156102ef576102ee6114f2565b5b816002811115610302576103016114f2565b5b036103525761034d85838151811061031d5761031c6114c3565b5b60200260200101516000015186848151811061033c5761033b6114c3565b5b6020026020010151604001516106de565b6103fb565b600280811115610365576103646114f2565b5b816002811115610378576103776114f2565b5b036103c8576103c3858381518110610393576103926114c3565b5b6020026020010151600001518684815181106103b2576103b16114c3565b5b602002602001015160400151610940565b6103fa565b6040517ff51092d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b50806104079061155a565b9050610238565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051610442939291906118c6565b60405180910390a16104548282610ab7565b505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b60008151036104c1576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104cb610459565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610533576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036105a05761059f8285610bc0565b5b60005b83518110156106d75760008482815181106105c1576105c06114c3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106ac576040517f98aaaded00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b88583868a610c82565b836106c290611923565b93505050806106d09061155a565b90506105a3565b5050505050565b6000815103610719576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610723610459565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361078b576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036107f8576107f78285610bc0565b5b60005b8351811015610939576000848281518110610819576108186114c3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610903576040517f25a7744900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090e858284610e2f565b61091a8583868a610c82565b8361092490611923565b93505050806109329061155a565b90506107fb565b5050505050565b600081510361097b576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610985610459565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109ed576040517f2d7466a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610ab1576000838281518110610a0e57610a0d6114c3565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610a9e848284610e2f565b505080610aaa9061155a565b90506109f0565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610bbc57610af58261147f565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b1d9190611993565b600060405180830381855af49150503d8060008114610b58576040519150601f19603f3d011682016040523d82523d6000602084013e610b5d565b606091505b509150915081610bb957600081511115610b7a5780518082602001fd5b83836040517fffdd9bd5000000000000000000000000000000000000000000000000000000008152600401610bb09291906119aa565b60405180910390fd5b50505b5050565b610bc98161147f565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e95576040517f716f7e6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610efa576040517f1c48b19a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050610fd191906119da565b90508082146111655760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611032576110316114c3565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106110ae576110ad6114c3565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806111b9576111b8611a0e565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103611478576000600186600201805490506112a391906119da565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146113e457600087600201838154811061130d5761130c6114c3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080886002018381548110611351576113506114c3565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b866002018054806113f8576113f7611a0e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000813b9050600081036114bf576040517f72978b6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600061156582611550565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361159757611596611521565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115f9826115ce565b9050919050565b611609816115ee565b82525050565b600381106116205761161f6114f2565b5b50565b60008190506116318261160f565b919050565b600061164182611623565b9050919050565b61165181611636565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6116b881611683565b82525050565b60006116ca83836116af565b60208301905092915050565b6000602082019050919050565b60006116ee82611657565b6116f88185611662565b935061170383611673565b8060005b8381101561173457815161171b88826116be565b9750611726836116d6565b925050600181019050611707565b5085935050505092915050565b60006060830160008301516117596000860182611600565b50602083015161176c6020860182611648565b506040830151848203604086015261178482826116e3565b9150508091505092915050565b600061179d8383611741565b905092915050565b6000602082019050919050565b60006117bd826115a2565b6117c781856115ad565b9350836020820285016117d9856115be565b8060005b8581101561181557848403895281516117f68582611791565b9450611801836117a5565b925060208a019950506001810190506117dd565b50829750879550505050505092915050565b611830816115ee565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611870578082015181840152602081019050611855565b60008484015250505050565b6000601f19601f8301169050919050565b600061189882611836565b6118a28185611841565b93506118b2818560208601611852565b6118bb8161187c565b840191505092915050565b600060608201905081810360008301526118e081866117b2565b90506118ef6020830185611827565b8181036040830152611901818461188d565b9050949350505050565b60006bffffffffffffffffffffffff82169050919050565b600061192e8261190b565b91506bffffffffffffffffffffffff820361194c5761194b611521565b5b600182019050919050565b600081905092915050565b600061196d82611836565b6119778185611957565b9350611987818560208601611852565b80840191505092915050565b600061199f8284611962565b915081905092915050565b60006040820190506119bf6000830185611827565b81810360208301526119d1818461188d565b90509392505050565b60006119e582611550565b91506119f083611550565b9250828203905081811115611a0857611a07611521565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220db1a19b64b86c62b8c36da2dcdfa8bf01f1f7b96632b6864cce87d9cfddf540464736f6c63430008110033000000000000000000000000c9d96ce8c56b346367c158209e9c92d0e4ab076c000000000000000000000000700e05ed7f2fc719ec81657126bd2d63e2551657

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

000000000000000000000000c9d96ce8c56b346367c158209e9c92d0e4ab076c000000000000000000000000700e05ed7f2fc719ec81657126bd2d63e2551657

-----Decoded View---------------
Arg [0] : _owner (address): 0xc9d96ce8c56b346367c158209e9c92d0e4ab076c
Arg [1] : _diamondCutFacet (address): 0x700e05ed7f2fc719ec81657126bd2d63e2551657

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c9d96ce8c56b346367c158209e9c92d0e4ab076c
Arg [1] : 000000000000000000000000700e05ed7f2fc719ec81657126bd2d63e2551657


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.