Contract 0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc2

Contract Overview

Balance:
0 MATIC
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0xa2818184b324638d826bfd2ba2292caeb2b3d7ee9346505c9af3153c5abedd5bExec361268902023-05-27 23:45:127 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000314704688 2.151488575
0x93266e1b789113dfb18885216abbecf9d26a99250b41a512cb323a59a12ea516Exec361260722023-05-27 23:16:1436 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000298495214 2.038497937
0x47cc617af02c6733aebd1e65ac0de4ec61ed315e44ffb9e0f8af86600466a2c2Exec361259592023-05-27 23:12:1440 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000223116868 1.533333348
0x451af25ddbeb7f3b874619e2f36d274a1fba6485b46ba3b4971b0900697eba15Exec361256272023-05-27 23:00:2851 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000122646529 1.974062515
0x2c851026a44ba68d15d62e34f6b83198c294056d2977fa5efe59164ed809a0ccExec361251692023-05-27 22:44:161 hr 8 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000594812577 3.883196957
0x10ea48e1724d1eaa84c02dd05a2ee903cc7e0d442afcac1f8a75b721e333327aExec361243772023-05-27 22:16:121 hr 36 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000407451043 2.660870017
0xd2e7359623749e1b12ea51e316833df57f0121ca8cab997762065d05393f2cd9Exec361242662023-05-27 22:12:161 hr 40 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000391719336 2.64673439
0x6b2e426ae783b76d08b4e3d76a39061b267ec940606fb89f6067386741aed52bExec361234742023-05-27 21:44:142 hrs 8 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000464085497 2.915714296
0x9bc32be80223382e1da9072a8ed45dcf6ff3c10eac3ba62971fd9016be7452aaExec361226562023-05-27 21:15:162 hrs 37 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000493853566 2.802689826
0x1cab8ae361b3802ad7e34634e83953abdc636bbed938834059b56f6abff3d4feExec361225702023-05-27 21:12:122 hrs 40 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000319325017 1.471428586
0x560ce9501c83d965cde3019c55438f307157d547694a36aa76cbc94f4c4c5d49Exec361222382023-05-27 21:00:262 hrs 52 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000168266116 2.707462982
0x23f4a890018dd7cc02d66ad87b7de2a68e82896233f62d2dc3fe8b01e5a032cfExec361217802023-05-27 20:44:143 hrs 8 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000430238668 2.443330104
0xe12319037f2b492b8f35fbccc7dc69d8081c29d2c58d85bd04bd512676713c95Exec361209332023-05-27 20:14:143 hrs 38 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000453974744 2.683050009
0xbe653d129dac68da2278efc3ff9df5c3582ef3f145df1e4299008af31c9dbbcdExec361208482023-05-27 20:11:143 hrs 41 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000385140749 2.619595232
0x4261e3fbb021f64f3d7b08b76c29051a76a391a210750fa94a5419c2971650f4Exec361200852023-05-27 19:44:124 hrs 8 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000588553443 3.477687758
0x291e2da98f3d451294ce3b1941f1f6331b91dbd01209251bf1b6faff17040e33Exec361192112023-05-27 19:13:144 hrs 39 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000329384829 2.251111112
0xebc453f310cc35cc09dbe3c3c2aa380e1cacea6cbfe4c8838d7328cbe2136223Exec361191542023-05-27 19:11:144 hrs 41 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000440365055 2.277777778
0x8fea12c8f61053579a21d74d1b7e087e64ad187b7b1facca724ba57a6f4e0795Exec361188492023-05-27 19:00:264 hrs 52 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000127070475 2.045400002
0xa5ac2e67200acf734f69835955073fd9970b8a0ace72965c7c8568eccdf91bbfExec361183632023-05-27 18:43:125 hrs 9 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000336438358 2.314406696
0xfbe784be9ff5c41a3050e6a7e7199ef89ad089355234430d78bea6aca8a1acd3Exec361175352023-05-27 18:13:145 hrs 39 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000337550034 2.208360004
0xc8ff9b67c7f6a063fa2279302e69b3e31571d8311f6f9e5f7a75472de35b8413Exec361174782023-05-27 18:11:145 hrs 41 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000346112229 2.365625007
0x35b028f45cb2055050b99e4c0b54ca1c318f654cf3dd2ae6bc6a9dcc1e7a4afeExec361166592023-05-27 17:42:146 hrs 10 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000567914544 3.881292121
0x24dc671efe7cbfd4e41e76435a67accd9e2e693eb3e9fd391b29bf02f5fbdb85Exec361158402023-05-27 17:13:146 hrs 39 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000384957082 1.991428571
0xaf2f9816181f8460a61cd60ab7a3d5a179e15777128824d79b22aaf1d47880e0Exec361157562023-05-27 17:10:146 hrs 42 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000387104433 2.288000008
0x2a91a6fd7115b9942cc6ee153c2a785d0947ba43bdee933ef7c04468230af80bExec361154792023-05-27 17:00:266 hrs 52 mins ago0x3ef0aa82a7f39a6bf0f41903c8653f5f483ea860 IN  0x266e4ab6bad069afc28d3c2cc129f6f8455b1dc20 MATIC0.000119411938 1.922000006
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Gelato

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 7 : Gelato.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import {LibDiamond} from "./libraries/diamond/standard/LibDiamond.sol";
import {IDiamondLoupe} from "./interfaces/diamond/standard/IDiamondLoupe.sol";
import {IDiamondCut} from "./interfaces/diamond/standard/IDiamondCut.sol";
import {IERC173} from "./interfaces/diamond/standard/IERC173.sol";
import {IERC165} from "./interfaces/diamond/standard/IERC165.sol";

contract Gelato {
    // more arguments are added to this struct
    // this avoids stack too deep errors
    struct DiamondArgs {
        address owner;
    }

    constructor(
        IDiamondCut.FacetCut[] memory _diamondCut,
        DiamondArgs memory _args
    ) payable {
        LibDiamond.diamondCut(_diamondCut, address(0), new bytes(0));
        LibDiamond.setContractOwner(_args.owner);

        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;
    }

    // Find facet for function that is called and execute the
    // function if a facet is found and return any value.
    // solhint-disable-next-line no-complex-fallback
    fallback() external payable {
        LibDiamond.DiamondStorage storage ds;
        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
        address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;
        require(facet != address(0), "Gelato: Function does not exist");
        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())
            }
        }
    }

    // solhint-disable-next-line no-empty-blocks, ordering
    receive() external payable {}
}

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

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: 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;
    }

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

    /// @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;
}

File 3 of 7 : IDiamondLoupe.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
* EIP-2535 Diamond Standard: 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 7 : IERC165.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

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 7 : IERC173.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

/// @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 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;

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

File 6 of 7 : GelatoBytes.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

library GelatoBytes {
    function calldataSliceSelector(bytes calldata _bytes)
        internal
        pure
        returns (bytes4 selector)
    {
        selector =
            _bytes[0] |
            (bytes4(_bytes[1]) >> 8) |
            (bytes4(_bytes[2]) >> 16) |
            (bytes4(_bytes[3]) >> 24);
    }

    function memorySliceSelector(bytes memory _bytes)
        internal
        pure
        returns (bytes4 selector)
    {
        selector =
            _bytes[0] |
            (bytes4(_bytes[1]) >> 8) |
            (bytes4(_bytes[2]) >> 16) |
            (bytes4(_bytes[3]) >> 24);
    }

    function revertWithError(bytes memory _bytes, string memory _tracingInfo)
        internal
        pure
    {
        // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err
        if (_bytes.length % 32 == 4) {
            bytes4 selector;
            assembly {
                selector := mload(add(0x20, _bytes))
            }
            if (selector == 0x08c379a0) {
                // Function selector for Error(string)
                assembly {
                    _bytes := add(_bytes, 68)
                }
                revert(string(abi.encodePacked(_tracingInfo, string(_bytes))));
            } else {
                revert(
                    string(abi.encodePacked(_tracingInfo, "NoErrorSelector"))
                );
            }
        } else {
            revert(
                string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata"))
            );
        }
    }

    function returnError(bytes memory _bytes, string memory _tracingInfo)
        internal
        pure
        returns (string memory)
    {
        // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err
        if (_bytes.length % 32 == 4) {
            bytes4 selector;
            assembly {
                selector := mload(add(0x20, _bytes))
            }
            if (selector == 0x08c379a0) {
                // Function selector for Error(string)
                assembly {
                    _bytes := add(_bytes, 68)
                }
                return string(abi.encodePacked(_tracingInfo, string(_bytes)));
            } else {
                return
                    string(abi.encodePacked(_tracingInfo, "NoErrorSelector"));
            }
        } else {
            return
                string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata"));
        }
    }
}

File 7 of 7 : LibDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;
// solhint-disable max-line-length
// https://github.com/mudgen/diamond-3/blob/b009cd08b7822bad727bbcc47aa1b50d8b50f7f0/contracts/libraries/LibDiamond.sol#L1

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

import "../../../interfaces/diamond/standard/IDiamondCut.sol";

// Custom due to incorrect string casting (non UTF-8 formatted)
import {GelatoBytes} from "../../../libraries/GelatoBytes.sol";

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

    struct FacetAddressAndPosition {
        address facetAddress;
        uint16 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array
    }

    struct FacetFunctionSelectors {
        bytes4[] functionSelectors;
        uint16 facetAddressPosition; // position of facetAddress in facetAddresses array
    }

    struct DiamondStorage {
        // maps function selector to the facet address and
        // the position of the selector in the facetFunctionSelectors.selectors array
        mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
        // maps facet addresses to function selectors
        mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
        // facet addresses
        address[] facetAddresses;
        // 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 isContractOwner(address _guy) internal view returns (bool) {
        return _guy == contractOwner();
    }

    function enforceIsContractOwner() internal view {
        require(
            msg.sender == diamondStorage().contractOwner,
            "LibDiamond: Must be contract owner"
        );
    }

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

    // Internal function version of diamondCut
    function diamondCut(
        IDiamondCut.FacetCut[] memory _diamondCut,
        address _init,
        bytes memory _calldata
    ) internal {
        for (
            uint256 facetIndex;
            facetIndex < _diamondCut.length;
            facetIndex++
        ) {
            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
            if (action == IDiamondCut.FacetCutAction.Add) {
                addFunctions(
                    _diamondCut[facetIndex].facetAddress,
                    _diamondCut[facetIndex].functionSelectors
                );
            } else if (action == IDiamondCut.FacetCutAction.Replace) {
                replaceFunctions(
                    _diamondCut[facetIndex].facetAddress,
                    _diamondCut[facetIndex].functionSelectors
                );
            } else if (action == IDiamondCut.FacetCutAction.Remove) {
                removeFunctions(
                    _diamondCut[facetIndex].facetAddress,
                    _diamondCut[facetIndex].functionSelectors
                );
            } else {
                revert("LibDiamondCut: Incorrect FacetCutAction");
            }
        }
        emit DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(
        address _facetAddress,
        bytes4[] memory _functionSelectors
    ) internal {
        require(
            _functionSelectors.length > 0,
            "LibDiamondCut: No selectors in facet to cut"
        );
        DiamondStorage storage ds = diamondStorage();
        // uint16 selectorCount = uint16(diamondStorage().selectors.length);
        require(
            _facetAddress != address(0),
            "LibDiamondCut: Add facet can't be address(0)"
        );
        uint16 selectorPosition = uint16(
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.length
        );
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(
                _facetAddress,
                "LibDiamondCut: New facet has no code"
            );
            ds
                .facetFunctionSelectors[_facetAddress]
                .facetAddressPosition = uint16(ds.facetAddresses.length);
            ds.facetAddresses.push(_facetAddress);
        }
        for (
            uint256 selectorIndex;
            selectorIndex < _functionSelectors.length;
            selectorIndex++
        ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds
                .selectorToFacetAndPosition[selector]
                .facetAddress;
            require(
                oldFacetAddress == address(0),
                "LibDiamondCut: Can't add function that already exists"
            );
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(
                selector
            );
            ds
                .selectorToFacetAndPosition[selector]
                .facetAddress = _facetAddress;
            ds
                .selectorToFacetAndPosition[selector]
                .functionSelectorPosition = selectorPosition;
            selectorPosition++;
        }
    }

    function replaceFunctions(
        address _facetAddress,
        bytes4[] memory _functionSelectors
    ) internal {
        require(
            _functionSelectors.length > 0,
            "LibDiamondCut: No selectors in facet to cut"
        );
        DiamondStorage storage ds = diamondStorage();
        require(
            _facetAddress != address(0),
            "LibDiamondCut: Add facet can't be address(0)"
        );
        uint16 selectorPosition = uint16(
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.length
        );
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            enforceHasContractCode(
                _facetAddress,
                "LibDiamondCut: New facet has no code"
            );
            ds
                .facetFunctionSelectors[_facetAddress]
                .facetAddressPosition = uint16(ds.facetAddresses.length);
            ds.facetAddresses.push(_facetAddress);
        }
        for (
            uint256 selectorIndex;
            selectorIndex < _functionSelectors.length;
            selectorIndex++
        ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds
                .selectorToFacetAndPosition[selector]
                .facetAddress;
            require(
                oldFacetAddress != _facetAddress,
                "LibDiamondCut: Can't replace function with same function"
            );
            removeFunction(oldFacetAddress, selector);
            // add function
            ds
                .selectorToFacetAndPosition[selector]
                .functionSelectorPosition = selectorPosition;
            ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(
                selector
            );
            ds
                .selectorToFacetAndPosition[selector]
                .facetAddress = _facetAddress;
            selectorPosition++;
        }
    }

    function removeFunctions(
        address _facetAddress,
        bytes4[] memory _functionSelectors
    ) internal {
        require(
            _functionSelectors.length > 0,
            "LibDiamondCut: No selectors in facet to cut"
        );
        DiamondStorage storage ds = diamondStorage();
        // if function does not exist then do nothing and return
        require(
            _facetAddress == address(0),
            "LibDiamondCut: Remove facet address must be address(0)"
        );
        for (
            uint256 selectorIndex;
            selectorIndex < _functionSelectors.length;
            selectorIndex++
        ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds
                .selectorToFacetAndPosition[selector]
                .facetAddress;
            removeFunction(oldFacetAddress, selector);
        }
    }

    function removeFunction(address _facetAddress, bytes4 _selector) internal {
        DiamondStorage storage ds = diamondStorage();
        require(
            _facetAddress != address(0),
            "LibDiamondCut: Can't remove function that doesn't exist"
        );
        // an immutable function is a function defined directly in a diamond
        require(
            _facetAddress != address(this),
            "LibDiamondCut: Can't remove immutable function"
        );
        // replace selector with last selector, then delete last selector
        uint256 selectorPosition = ds
            .selectorToFacetAndPosition[_selector]
            .functionSelectorPosition;
        uint256 lastSelectorPosition = ds
            .facetFunctionSelectors[_facetAddress]
            .functionSelectors
            .length - 1;
        // if not the same then replace _selector with lastSelector
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector = ds
                .facetFunctionSelectors[_facetAddress]
                .functionSelectors[lastSelectorPosition];
            ds.facetFunctionSelectors[_facetAddress].functionSelectors[
                    selectorPosition
                ] = lastSelector;
            ds
                .selectorToFacetAndPosition[lastSelector]
                .functionSelectorPosition = uint16(selectorPosition);
        }
        // delete the last selector
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();
        delete ds.selectorToFacetAndPosition[_selector];

        // if no more selectors for facet address then delete the facet address
        if (lastSelectorPosition == 0) {
            // replace facet address with last facet address and delete last facet address
            uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;
            uint256 facetAddressPosition = ds
                .facetFunctionSelectors[_facetAddress]
                .facetAddressPosition;
            if (facetAddressPosition != lastFacetAddressPosition) {
                address lastFacetAddress = ds.facetAddresses[
                    lastFacetAddressPosition
                ];
                ds.facetAddresses[facetAddressPosition] = lastFacetAddress;
                ds
                    .facetFunctionSelectors[lastFacetAddress]
                    .facetAddressPosition = uint16(facetAddressPosition);
            }
            ds.facetAddresses.pop();
            delete ds
                .facetFunctionSelectors[_facetAddress]
                .facetAddressPosition;
        }
    }

    function initializeDiamondCut(address _init, bytes memory _calldata)
        internal
    {
        if (_init == address(0)) {
            require(
                _calldata.length == 0,
                "LibDiamondCut: _init is address(0) but_calldata is not empty"
            );
        } else {
            require(
                _calldata.length > 0,
                "LibDiamondCut: _calldata is empty but _init is not address(0)"
            );
            if (_init != address(this)) {
                enforceHasContractCode(
                    _init,
                    "LibDiamondCut: _init address has no code"
                );
            }
            (bool success, bytes memory error) = _init.delegatecall(_calldata);
            if (!success) {
                if (error.length > 0) {
                    // bubble up the error
                    GelatoBytes.revertWithError(error, "LibDiamondCut:_init:");
                } else {
                    revert("LibDiamondCut: _init function reverted");
                }
            }
        }
    }

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

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

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":"address","name":"owner","type":"address"}],"internalType":"struct Gelato.DiamondArgs","name":"_args","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

608060405260405162002d1538038062002d15833981016040819052620000269162001366565b604080516000808252602082019092526200004e918491620000f560201b620000c81760201c565b6200006881600001516200035060201b620002d91760201c565b60006200007f620003d460201b620003391760201c565b6301ffc9a760e01b600090815260039091016020526040808220805460ff1990811660019081179092556307e4c70760e21b845282842080548216831790556348e2b09360e01b845282842080548216831790556307f5828d60e41b845291909220805490911690911790555062001827915050565b60005b83518110156200030157600084828151811062000119576200011962001510565b6020026020010151602001519050600060028111156200013d576200013d62001526565b81600281111562000152576200015262001526565b03620001b057620001aa85838151811062000171576200017162001510565b60200260200101516000015186848151811062000192576200019262001510565b602002602001015160400151620003e760201b60201c565b620002eb565b6001816002811115620001c757620001c762001526565b036200021f57620001aa858381518110620001e657620001e662001510565b60200260200101516000015186848151811062000207576200020762001510565b602002602001015160400151620006d260201b60201c565b600281600281111562000236576200023662001526565b036200028e57620001aa85838151811062000255576200025562001510565b60200260200101516000015186848151811062000276576200027662001510565b602002602001015160400151620009d960201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b5080620002f88162001552565b915050620000f8565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516200033793929190620015c2565b60405180910390a16200034b828262000b3e565b505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b0384811691821790935560405160008051602062002c69833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008051602062002c6983398151915290565b60008151116200043d5760405162461bcd60e51b815260206004820152602b602482015260008051602062002cf583398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002e2565b60008051602062002c698339815191526001600160a01b038316620004a95760405162461bcd60e51b815260206004820152602c602482015260008051602062002cb183398151915260448201526b65206164647265737328302960a01b6064820152608401620002e2565b6001600160a01b03831660009081526001820160205260408120549061ffff821690036200055257620004f68460405180606001604052806024815260200162002cd16024913962000d93565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b8351811015620006cb57600084828151811062000576576200057662001510565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156200061e5760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401620002e2565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff87160217905583620006b081620016c9565b94505050508080620006c29062001552565b91505062000555565b5050505050565b6000815111620007285760405162461bcd60e51b815260206004820152602b602482015260008051602062002cf583398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002e2565b60008051602062002c698339815191526001600160a01b038316620007945760405162461bcd60e51b815260206004820152602c602482015260008051602062002cb183398151915260448201526b65206164647265737328302960a01b6064820152608401620002e2565b6001600160a01b03831660009081526001820160205260408120549061ffff821690036200083d57620007e18460405180606001604052806024815260200162002cd16024913962000d93565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b8351811015620006cb57600084828151811062000861576200086162001510565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681036200090e5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401620002e2565b6200091a818362000db7565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583620009be81620016c9565b94505050508080620009d09062001552565b91505062000840565b600081511162000a2f5760405162461bcd60e51b815260206004820152602b602482015260008051602062002cf583398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002e2565b60008051602062002c698339815191526001600160a01b0383161562000abe5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d7573742062652061646472657373283029000000000000000000006064820152608401620002e2565b60005b825181101562000b3857600083828151811062000ae25762000ae262001510565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000b20818362000db7565b5050808062000b2f9062001552565b91505062000ac1565b50505050565b6001600160a01b03821662000bc85780511562000bc45760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d707479000000006064820152608401620002e2565b5050565b600081511162000c415760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f7420616464726573732830290000006064820152608401620002e2565b6001600160a01b038216301462000c775762000c778260405180606001604052806028815260200162002c896028913962000d93565b600080836001600160a01b03168360405162000c949190620016ed565b600060405180830381855af49150503d806000811462000cd1576040519150601f19603f3d011682016040523d82523d6000602084013e62000cd6565b606091505b50915091508162000b385780511562000d3b5762000d35816040518060400160405280601481526020017f4c69624469616d6f6e644375743a5f696e69743a000000000000000000000000815250620011c060201b6200035d1760201c565b62000b38565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b6064820152608401620002e2565b813b818162000b385760405162461bcd60e51b8152600401620002e291906200170b565b60008051602062002c698339815191526001600160a01b03831662000e455760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401620002e2565b306001600160a01b0384160362000eb65760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b6064820152608401620002e2565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff16929162000f029162001727565b905080821462000ff5576001600160a01b0385166000908152600184016020526040812080548390811062000f3b5762000f3b62001510565b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000f8f5762000f8f62001510565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b0385166000908152600184016020526040902080548062001021576200102162001743565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040812080546001600160b01b0319169055819003620006cb576002830154600090620010929060019062001727565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff1680821462001158576000856002018381548110620010d957620010d962001510565b6000918252602090912001546002870180546001600160a01b0390921692508291849081106200110d576200110d62001510565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b846002018054806200116e576200116e62001743565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b60208251620011d0919062001759565b6004036200124b5760208201516001600160e01b0319811662461bcd60e51b0362001238576044830192508183604051602001620012109291906200177c565b60408051601f198184030181529082905262461bcd60e51b8252620002e2916004016200170b565b81604051602001620012109190620017af565b80604051602001620012109190620017e4565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156200129957620012996200125e565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620012ca57620012ca6200125e565b604052919050565b60006001600160401b03821115620012ee57620012ee6200125e565b5060051b60200190565b80516001600160a01b03811681146200131057600080fd5b919050565b6000602082840312156200132857600080fd5b604051602081016001600160401b03811182821017156200134d576200134d6200125e565b6040529050806200135e83620012f8565b905292915050565b600080604083850312156200137a57600080fd5b82516001600160401b03808211156200139257600080fd5b818501915085601f830112620013a757600080fd5b81516020620013c0620013ba83620012d2565b6200129f565b82815260059290921b84018101918181019089841115620013e057600080fd5b8286015b84811015620014f057805186811115620013fd57600080fd5b87016060818d03601f190112156200141457600080fd5b6200141e62001274565b6200142b868301620012f8565b81526040820151600381106200144057600080fd5b818701526060820151888111156200145757600080fd5b8083019250508c603f8301126200146d57600080fd5b8582015162001480620013ba82620012d2565b81815260059190911b830160400190878101908f831115620014a157600080fd5b6040850194505b82851015620014da5784516001600160e01b031981168114620014ca57600080fd5b82529388019390880190620014a8565b60408401525050845250918301918301620013e4565b5096506200150390508888830162001315565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200156757620015676200153c565b5060010190565b60005b838110156200158b57818101518382015260200162001571565b50506000910152565b60008151808452620015ae8160208601602086016200156e565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200169757898403607f19018652815180516001600160a01b031685528381015189860190600381106200163357634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620016815783516001600160e01b031916825292860192600192909201919086019062001655565b50978501979550505090820190600101620015eb565b50506001600160a01b038a16908801528681036040880152620016bb818962001594565b9a9950505050505050505050565b600061ffff808316818103620016e357620016e36200153c565b6001019392505050565b60008251620017018184602087016200156e565b9190910192915050565b60208152600062001720602083018462001594565b9392505050565b818103818111156200173d576200173d6200153c565b92915050565b634e487b7160e01b600052603160045260246000fd5b6000826200177757634e487b7160e01b600052601260045260246000fd5b500690565b60008351620017908184602088016200156e565b835190830190620017a68183602088016200156e565b01949350505050565b60008251620017c38184602087016200156e565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b60008251620017f88184602087016200156e565b7f556e657870656374656452657475726e64617461000000000000000000000000920191825250601401919050565b61143280620018376000396000f3fe60806040523661000b57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100a45760405162461bcd60e51b815260206004820152601f60248201527f47656c61746f3a2046756e6374696f6e20646f6573206e6f742065786973740060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100c3573d6000f35b3d6000fd5b60005b835181101561028e5760008482815181106100e8576100e861102c565b60200260200101516020015190506000600281111561010957610109611042565b81600281111561011b5761011b611042565b03610169576101648583815181106101355761013561102c565b6020026020010151600001518684815181106101535761015361102c565b6020026020010151604001516103ef565b61027b565b600181600281111561017d5761017d611042565b036101c6576101648583815181106101975761019761102c565b6020026020010151600001518684815181106101b5576101b561102c565b602002602001015160400151610654565b60028160028111156101da576101da611042565b03610223576101648583815181106101f4576101f461102c565b6020026020010151600001518684815181106102125761021261102c565b6020026020010151604001516108db565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840161009b565b50806102868161106e565b9150506100cb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102c2939291906110d7565b60405180910390a16102d482826109f5565b505050565b60006102e3610339565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6020825161036b91906111d7565b6004036103de5760208201516001600160e01b0319811662461bcd60e51b036103cd5760448301925081836040516020016103a79291906111f9565b60408051601f198184030181529082905262461bcd60e51b825261009b91600401611228565b816040516020016103a79190611242565b806040516020016103a79190611275565b60008151116104105760405162461bcd60e51b815260040161009b906112ad565b600061041a610339565b90506001600160a01b0383166104425760405162461bcd60e51b815260040161009b906112f8565b6001600160a01b03831660009081526001820160205260408120549061ffff821690036104e75761048b846040518060600160405280602481526020016113d960249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064d5760008482815181106105075761050761102c565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105a55760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b606482015260840161009b565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff8716021790558361063581611344565b945050505080806106459061106e565b9150506104ea565b5050505050565b60008151116106755760405162461bcd60e51b815260040161009b906112ad565b600061067f610339565b90506001600160a01b0383166106a75760405162461bcd60e51b815260040161009b906112f8565b6001600160a01b03831660009081526001820160205260408120549061ffff8216900361074c576106f0846040518060600160405280602481526020016113d960249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064d57600084828151811061076c5761076c61102c565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681036108175760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161009b565b6108218183610c44565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836108c381611344565b945050505080806108d39061106e565b91505061074f565b60008151116108fc5760405162461bcd60e51b815260040161009b906112ad565b6000610906610339565b90506001600160a01b0383161561097e5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b606482015260840161009b565b60005b82518110156109ef57600083828151811061099e5761099e61102c565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b03166109da8183610c44565b505080806109e79061106e565b915050610981565b50505050565b6001600160a01b038216610a7c57805115610a785760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840161009b565b5050565b6000815111610af35760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840161009b565b6001600160a01b0382163014610b2557610b25826040518060600160405280602881526020016113b160289139610c23565b600080836001600160a01b031683604051610b409190611365565b600060405180830381855af49150503d8060008114610b7b576040519150601f19603f3d011682016040523d82523d6000602084013e610b80565b606091505b5091509150816109ef57805115610bcc57610bc781604051806040016040528060148152602001732634b12234b0b6b7b73221baba1d2fb4b734ba1d60611b81525061035d565b6109ef565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840161009b565b813b81816109ef5760405162461bcd60e51b815260040161009b9190611228565b6000610c4e610339565b90506001600160a01b038316610ccc5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161009b565b306001600160a01b03841603610d3b5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b606482015260840161009b565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610d8591611381565b9050808214610e71576001600160a01b03851660009081526001840160205260408120805483908110610dba57610dba61102c565b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610e0b57610e0b61102c565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610e9a57610e9a61139a565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040812080546001600160b01b031916905581900361064d576002830154600090610f0890600190611381565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610fc7576000856002018381548110610f4b57610f4b61102c565b6000918252602090912001546002870180546001600160a01b039092169250829184908110610f7c57610f7c61102c565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610fda57610fda61139a565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161108057611080611058565b5060010190565b60005b838110156110a257818101518382015260200161108a565b50506000910152565b600081518084526110c3816020860160208601611087565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156111a757898403607f19018652815180516001600160a01b0316855283810151898601906003811061114657634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156111925783516001600160e01b0319168252928601926001929092019190860190611168565b50978501979550505090820190600101611100565b50506001600160a01b038a169088015286810360408801526111c981896110ab565b9a9950505050505050505050565b6000826111f457634e487b7160e01b600052601260045260246000fd5b500690565b6000835161120b818460208801611087565b83519083019061121f818360208801611087565b01949350505050565b60208152600061123b60208301846110ab565b9392505050565b60008251611254818460208701611087565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b60008251611287818460208701611087565b73556e657870656374656452657475726e6461746160601b920191825250601401919050565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b600061ffff80831681810361135b5761135b611058565b6001019392505050565b60008251611377818460208701611087565b9190910192915050565b8181038181111561139457611394611058565b92915050565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220874e67afbe11c911f7027c92d9e97d72fe80b2f4318ed7a11fec011282d732c464736f6c63430008110033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206600000000000000000000000000000000000000000000000000000000000000400000000000000000000000009386cdccbf11335587f2c769bb88e6e30685945e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004c0000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000940000000000000000000000000410bb3b3eb7ceb132b4ebc5a93c663675f2dca040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000106a9f9e50179b030ac43af00e844e2eee93110b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000000000000000000000000000033191f704310681f98d739878309b638591d7aa40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000675be170342c5e094f0cf0f4cf53cd9bbe8f852e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000061ecd9cd800000000000000000000000000000000000000000000000000000000afda35cb00000000000000000000000000000000000000000000000000000000e52e63c500000000000000000000000000000000000000000000000000000000debfda30000000000000000000000000000000000000000000000000000000001499e05b00000000000000000000000000000000000000000000000000000000dc09c3e400000000000000000000000000000000000000000000000000000000000000000000000000000000b27449d5978ea4e0aa1b634452687e370a429bef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001b87b0b4c00000000000000000000000000000000000000000000000000000000000000000000000000000000ea2f097d695ba87ae0911be59dec0b079903e36f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000d3644e5150000000000000000000000000000000000000000000000000000000083ec307700000000000000000000000000000000000000000000000000000000544dd3950000000000000000000000000000000000000000000000000000000046e356b1000000000000000000000000000000000000000000000000000000004522589f000000000000000000000000000000000000000000000000000000000a4806ce00000000000000000000000000000000000000000000000000000000cd2cf36600000000000000000000000000000000000000000000000000000000c415b95c0000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000067c62fe000000000000000000000000000000000000000000000000000000000f111786a000000000000000000000000000000000000000000000000000000001c367bc30000000000000000000000000000000000000000000000000000000054fd4d5000000000000000000000000000000000000000000000000000000000000000000000000000000000b48d8534bbf385bed8aa62dd973f9a347c51606600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000ad807c58b000000000000000000000000000000000000000000000000000000009a8f05ac000000000000000000000000000000000000000000000000000000003d21c94e000000000000000000000000000000000000000000000000000000000a1d34de000000000000000000000000000000000000000000000000000000000f4901f000000000000000000000000000000000000000000000000000000000aeff94bd00000000000000000000000000000000000000000000000000000000bcdfb2a6000000000000000000000000000000000000000000000000000000008c40060f000000000000000000000000000000000000000000000000000000003b96abfe00000000000000000000000000000000000000000000000000000000fb2422f3000000000000000000000000000000000000000000000000000000000000000000000000000000004c08a221750c770a351cbc76aa9cb2421fbd8978000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001beabacc800000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000009386cdccbf11335587f2c769bb88e6e30685945e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000004c0000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000940000000000000000000000000410bb3b3eb7ceb132b4ebc5a93c663675f2dca040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000106a9f9e50179b030ac43af00e844e2eee93110b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000000000000000000000000000033191f704310681f98d739878309b638591d7aa40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000675be170342c5e094f0cf0f4cf53cd9bbe8f852e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000061ecd9cd800000000000000000000000000000000000000000000000000000000afda35cb00000000000000000000000000000000000000000000000000000000e52e63c500000000000000000000000000000000000000000000000000000000debfda30000000000000000000000000000000000000000000000000000000001499e05b00000000000000000000000000000000000000000000000000000000dc09c3e400000000000000000000000000000000000000000000000000000000000000000000000000000000b27449d5978ea4e0aa1b634452687e370a429bef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001b87b0b4c00000000000000000000000000000000000000000000000000000000000000000000000000000000ea2f097d695ba87ae0911be59dec0b079903e36f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000d3644e5150000000000000000000000000000000000000000000000000000000083ec307700000000000000000000000000000000000000000000000000000000544dd3950000000000000000000000000000000000000000000000000000000046e356b1000000000000000000000000000000000000000000000000000000004522589f000000000000000000000000000000000000000000000000000000000a4806ce00000000000000000000000000000000000000000000000000000000cd2cf36600000000000000000000000000000000000000000000000000000000c415b95c0000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000067c62fe000000000000000000000000000000000000000000000000000000000f111786a000000000000000000000000000000000000000000000000000000001c367bc30000000000000000000000000000000000000000000000000000000054fd4d5000000000000000000000000000000000000000000000000000000000000000000000000000000000b48d8534bbf385bed8aa62dd973f9a347c51606600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000ad807c58b000000000000000000000000000000000000000000000000000000009a8f05ac000000000000000000000000000000000000000000000000000000003d21c94e000000000000000000000000000000000000000000000000000000000a1d34de000000000000000000000000000000000000000000000000000000000f4901f000000000000000000000000000000000000000000000000000000000aeff94bd00000000000000000000000000000000000000000000000000000000bcdfb2a6000000000000000000000000000000000000000000000000000000008c40060f000000000000000000000000000000000000000000000000000000003b96abfe00000000000000000000000000000000000000000000000000000000fb2422f3000000000000000000000000000000000000000000000000000000000000000000000000000000004c08a221750c770a351cbc76aa9cb2421fbd8978000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001beabacc800000000000000000000000000000000000000000000000000000000

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

-----Encoded View---------------
82 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000009386cdccbf11335587f2c769bb88e6e30685945e
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [4] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [5] : 00000000000000000000000000000000000000000000000000000000000002c0
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000380
Arg [7] : 00000000000000000000000000000000000000000000000000000000000004c0
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000560
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000780
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000940
Arg [11] : 000000000000000000000000410bb3b3eb7ceb132b4ebc5a93c663675f2dca04
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [15] : 1f931c1c00000000000000000000000000000000000000000000000000000000
Arg [16] : 000000000000000000000000106a9f9e50179b030ac43af00e844e2eee93110b
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [19] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [20] : cdffacc600000000000000000000000000000000000000000000000000000000
Arg [21] : 52ef6b2c00000000000000000000000000000000000000000000000000000000
Arg [22] : adfca15e00000000000000000000000000000000000000000000000000000000
Arg [23] : 7a0ed62700000000000000000000000000000000000000000000000000000000
Arg [24] : 01ffc9a700000000000000000000000000000000000000000000000000000000
Arg [25] : 00000000000000000000000033191f704310681f98d739878309b638591d7aa4
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [28] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [29] : 8da5cb5b00000000000000000000000000000000000000000000000000000000
Arg [30] : f2fde38b00000000000000000000000000000000000000000000000000000000
Arg [31] : 000000000000000000000000675be170342c5e094f0cf0f4cf53cd9bbe8f852e
Arg [32] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [33] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [34] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [35] : 1ecd9cd800000000000000000000000000000000000000000000000000000000
Arg [36] : afda35cb00000000000000000000000000000000000000000000000000000000
Arg [37] : e52e63c500000000000000000000000000000000000000000000000000000000
Arg [38] : debfda3000000000000000000000000000000000000000000000000000000000
Arg [39] : 1499e05b00000000000000000000000000000000000000000000000000000000
Arg [40] : dc09c3e400000000000000000000000000000000000000000000000000000000
Arg [41] : 000000000000000000000000b27449d5978ea4e0aa1b634452687e370a429bef
Arg [42] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [43] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [44] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [45] : b87b0b4c00000000000000000000000000000000000000000000000000000000
Arg [46] : 000000000000000000000000ea2f097d695ba87ae0911be59dec0b079903e36f
Arg [47] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [48] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [49] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [50] : 3644e51500000000000000000000000000000000000000000000000000000000
Arg [51] : 83ec307700000000000000000000000000000000000000000000000000000000
Arg [52] : 544dd39500000000000000000000000000000000000000000000000000000000
Arg [53] : 46e356b100000000000000000000000000000000000000000000000000000000
Arg [54] : 4522589f00000000000000000000000000000000000000000000000000000000
Arg [55] : 0a4806ce00000000000000000000000000000000000000000000000000000000
Arg [56] : cd2cf36600000000000000000000000000000000000000000000000000000000
Arg [57] : c415b95c00000000000000000000000000000000000000000000000000000000
Arg [58] : 06fdde0300000000000000000000000000000000000000000000000000000000
Arg [59] : 67c62fe000000000000000000000000000000000000000000000000000000000
Arg [60] : f111786a00000000000000000000000000000000000000000000000000000000
Arg [61] : 1c367bc300000000000000000000000000000000000000000000000000000000
Arg [62] : 54fd4d5000000000000000000000000000000000000000000000000000000000
Arg [63] : 000000000000000000000000b48d8534bbf385bed8aa62dd973f9a347c516066
Arg [64] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [65] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [66] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [67] : d807c58b00000000000000000000000000000000000000000000000000000000
Arg [68] : 9a8f05ac00000000000000000000000000000000000000000000000000000000
Arg [69] : 3d21c94e00000000000000000000000000000000000000000000000000000000
Arg [70] : 0a1d34de00000000000000000000000000000000000000000000000000000000
Arg [71] : 0f4901f000000000000000000000000000000000000000000000000000000000
Arg [72] : aeff94bd00000000000000000000000000000000000000000000000000000000
Arg [73] : bcdfb2a600000000000000000000000000000000000000000000000000000000
Arg [74] : 8c40060f00000000000000000000000000000000000000000000000000000000
Arg [75] : 3b96abfe00000000000000000000000000000000000000000000000000000000
Arg [76] : fb2422f300000000000000000000000000000000000000000000000000000000
Arg [77] : 0000000000000000000000004c08a221750c770a351cbc76aa9cb2421fbd8978
Arg [78] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [79] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [80] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [81] : beabacc800000000000000000000000000000000000000000000000000000000


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading