Contract 0x86935f11c86623dec8a25696e1c19a8659cbf95d 5

 
Txn Hash
Block
From
To
Value [Txn Fee]
0xbb7ef24156eaf1789eac0b3cd3b30f2f32cd65ef8f51addb7f5d7dc36a5c8acb173719622021-07-28 23:03:4715 secs ago0xaf4fa10c1e93e9c60149f386ce783a4bc2952a77 IN  Aavegotchi: Opensea0 MATIC0.000201095
0x4143a330fcf12b65e1dd9eee375eb1ffd3acedd805e72669f6c365f1c759e17c173719582021-07-28 23:03:3923 secs ago0x81312ad57ef129a6cc8c3ffc16816f7b512e0636 IN  Aavegotchi: Opensea0 MATIC0.000361971
0xcafac91e22e64027389d426f6871688d1e345690f66131e9b72b6a444c700603173719432021-07-28 23:03:0953 secs ago0x44f887a4ebd0c5fb3fb1c3d9f18148ed5f8c4e90 IN  Aavegotchi: Opensea0 MATIC0.000150515
0xc5af00196cadf9cb3823230b2d6c58f9bdb3227825f8daa92ec9469cbde3b2c2173719212021-07-28 23:02:251 min ago0x6a78a2a786b74704c94d0a6245f2233f70d22161 IN  Aavegotchi: Opensea0 MATIC0.000201095
0xdba16f186547029996c72bd9157148fe235a76e846c8356fddf05b1e418ecf2f173719072021-07-28 23:01:572 mins ago0xc10898eda672fdfc4ac0228bb1da9b2bf54c768f IN  Aavegotchi: Opensea0 MATIC0.000321752
0x9d2a0545a7df64ba50638b53aad62b7c18629d26634c557f9ab93632b75a721e173719062021-07-28 23:01:552 mins ago0x6a78a2a786b74704c94d0a6245f2233f70d22161 IN  Aavegotchi: Opensea0 MATIC0.000201095
0xec66a266959f9fb32fa90a584999baa947eae5df0c67597cf13e4fef46fdfe97173718932021-07-28 23:01:252 mins ago0x7f2f3685afd60e33ab9e2d35bfa93d4aaa909806 IN  Aavegotchi: Opensea0 MATIC0.000150515
0x6f62ddd844c4b47ebe2fa877939d5c0b14605c9b1b6ac4d7ac76dbc171c9446f173718892021-07-28 23:01:172 mins ago0x2d19ca3ca720a80d8d5ff4b28c674d8d76dd24e1 IN  Aavegotchi: Opensea0 MATIC0.00040219
0xc33c84f5c3fb889d54d0730bbdd70808293495b14994f0ae9c9a2caf3c60b249173718862021-07-28 23:01:112 mins ago0x7f2f3685afd60e33ab9e2d35bfa93d4aaa909806 IN  Aavegotchi: Opensea0 MATIC0.000201095
0xec0853bf11fd3af9bf0c8919e5625dc28840e01789afd4ade181caf23ef34890173718832021-07-28 23:01:052 mins ago0x7f2f3685afd60e33ab9e2d35bfa93d4aaa909806 IN  Aavegotchi: Opensea0 MATIC0.000201095
0x5d37d9505580e03d84c2e504e140ddc84f4320eea7af160713f5057a228c6df9173718772021-07-28 23:00:533 mins ago0x7f2f3685afd60e33ab9e2d35bfa93d4aaa909806 IN  Aavegotchi: Opensea0 MATIC0.000201095
0x541b29a054a030f512657fe99685aebc40a3e2b91ceb9372884777f0806adaad173718762021-07-28 23:00:513 mins ago0x257b5a6b4e777b14b00c31f5e3874a5fa1c4145b IN  Aavegotchi: Opensea0 MATIC0.0001604196
0x90b372e3c3697936ec813d7357469750755d61921baf74a9b04c7f923356045c173718732021-07-28 23:00:453 mins ago0x6a78a2a786b74704c94d0a6245f2233f70d22161 IN  Aavegotchi: Opensea0 MATIC0.000201095
0x05f963f324639771fea7829bc6fb9152bfe444f726eff4796f781eb5e441017a173718712021-07-28 23:00:413 mins ago0xd8068f813c45c88cebb02cbc0f91f95626ec9a34 IN  Aavegotchi: Opensea0 MATIC0.00020112
0x0ad5f218bd178260d3a623e06c9465df2d6880031b672a2fa246ef7d9115e96c173718552021-07-28 23:00:093 mins ago0xb006350d11a637378aab6a785a2fbc0ee3469f93 IN  Aavegotchi: Opensea0 MATIC0.000201095
0xabd2d3f2e7c0bad3b37ee56324d97dc0874fe42cf509d6d8677d6782512514c6173718392021-07-28 22:59:334 mins ago0x18376b013ff6f238e9cdd9c1e72e2085197e525d IN  Aavegotchi: Opensea0 MATIC0.038239275
0x0ae19f0ac9b62575424ea547286d533af1c11406a5bd2b4c6359bc997a8ee02f173718372021-07-28 22:59:294 mins ago0x7742d70cb3ae62e4d7958c5eaf6c0a45cdc9ca9e IN  Aavegotchi: Opensea0 MATIC0.001989425
0x4fd4a4d8113241f5caa8e10210468ac43ec281d188e39afc25355213331fe109173718222021-07-28 22:58:595 mins ago0xee799b2c65a2695012fec4e45f4e5161166cc066 IN  Aavegotchi: Opensea0 MATIC0.000201095
0xaf639451fd3ca03990d1a967da02c3581ee20b6d7ab49885447081fe6d71b718173718152021-07-28 22:58:455 mins ago0x1754352eacb753327fec2d4f48f0fb36b672c5e0 IN  Aavegotchi: Opensea0 MATIC0.000040219
0x5bef01133297e82f401ce2fabcabcf31df23cb64208dcb59e81fa2fc8f63c7aa173718092021-07-28 22:58:335 mins ago0x1754352eacb753327fec2d4f48f0fb36b672c5e0 IN  Aavegotchi: Opensea0 MATIC0.000040219
0x8b62703f7dfa4253ff2a210432114f4b32dedd0cbd0df3a94b869ff24d2f738d173718032021-07-28 22:58:215 mins ago0x1754352eacb753327fec2d4f48f0fb36b672c5e0 IN  Aavegotchi: Opensea0 MATIC0.000040219
0xd75f6e3bb45eb2f8255499ff8333216e1cbfa5566d983a25df18df3e52f72a14173717942021-07-28 22:58:035 mins ago0x1754352eacb753327fec2d4f48f0fb36b672c5e0 IN  Aavegotchi: Opensea0 MATIC0.000040219
0x50e3f6a95ed7da06137ecc209c2d718880263906d510a31555db65fd36fbb54e173717842021-07-28 22:57:436 mins ago0x9a8ab692a6d73242c74a727ac7587aeda778b131 IN  Aavegotchi: Opensea0 MATIC0.000201095
0x8d12d7faab0c75ca12ceae9546c9af8b402a0bc6bd8531a592057eeaf564c906173717742021-07-28 22:57:196 mins ago0x9a8ab692a6d73242c74a727ac7587aeda778b131 IN  Aavegotchi: Opensea0 MATIC0.000201095
0x8d1977b1387e7331d47faefd08dd2962416db834c5183e897932a4c9cdd55086173717642021-07-28 22:56:597 mins ago0x9a8ab692a6d73242c74a727ac7587aeda778b131 IN  Aavegotchi: Opensea0 MATIC0.000150515
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb95d05bf2d46786f45a2862b9e19c42219a2d19783c27c378e286d5fccbd1f9d173673872021-07-28 19:18:133 hrs 45 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x45f001a081018b479bfd9f0ef83f6c72706474bf7c88999cd3f7b380a2792dbf173627892021-07-28 15:01:558 hrs 2 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xa09134e5283b896c57035a9642e5300a1aa874ab9d155a6fa78795e423ee798a173607552021-07-28 13:26:199 hrs 37 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xeec462a7bb0dbc4e3d34ae2c2d85729db3917b66a7ef8496c541d7e6e6dd1e3e173588002021-07-28 11:51:1911 hrs 12 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x4df5ffce1525a0f7d4a0a7c4043c380213b3bb2cb488ea0dac1709e24d8ed8c5173585832021-07-28 11:41:3611 hrs 22 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x5088bda03007f87a21fd7bf660890d41d3028b82eddd47f4a8c070348400fb78173538682021-07-28 8:15:0814 hrs 48 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xca6ad2428435e812705d7d145727d9dfd787036bf5bd464ef8361c7a99b88e77173511202021-07-28 6:31:2816 hrs 32 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x94cf66a2ca529775bfcd6318a2e81043d662ba43393b395d1a61d391520b30a5173445872021-07-28 2:24:2920 hrs 39 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xf7fcec949f1db1f1f5d8a2aead91aa1fa22f8a05d5fc52185b498dbb6bf756d2173444612021-07-28 2:20:0920 hrs 43 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x391315d2cf1e135571ccb755f5bc934a3eaa6a6dc251b5c4bbb92c6eef8d1400173443572021-07-28 2:16:3320 hrs 47 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xf8511884a709271eb91f352a566edfc545ae2c8183762fffb26fcd9b163c17ba173442032021-07-28 2:11:1720 hrs 52 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xd888699f0507795378cc09548fc5771a4ce43acf20e39d3e187d979276fe127f173426952021-07-28 1:12:1321 hrs 51 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x2a5dc8dc46737f93ce843e852d501c7792e778b79e7880ef8bd2ed9e365626b7173415032021-07-28 0:27:1922 hrs 36 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xdddb278eb868a56f9aa9a7e988686b0d878c2dae19ac0ba379fa6a5c339aaa75173413962021-07-28 0:23:4122 hrs 40 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x461c6150d144baa1ca6337007d42e182029878d6a2830619128dcf63c5812f07173377852021-07-27 22:04:231 day 59 mins ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x8ca5ebbdbf82a7d06d7136692cc143869144697b12517b21341a8528b9d8386c173376152021-07-27 21:54:311 day 1 hr ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xddceb76c2fbf4b9cdf2193ee5d1299f5a511a668688158c092ad8a2dadd117f7173334712021-07-27 19:09:251 day 3 hrs ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x314f0b00dbe0a043a5e9a1255072c2e6386630ef684ce9c76b0421583d0f7dad173314922021-07-27 17:53:491 day 5 hrs ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x741dbc363696e9022a675f52a3bbe249220d19ce9a9f2ea09debdd8d9e3b75df173289092021-07-27 16:17:061 day 6 hrs ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xe385cecc244096ddac0c7298539801920ab3b233f9374d4bace6d7668860af6c173288232021-07-27 16:14:061 day 6 hrs ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x4f3e7b4841676cc77dc5f77ee9e504935642f2430c8d2363b71e3aa9041ed160173287112021-07-27 16:10:181 day 6 hrs ago Aavegotchi: Opensea  Contract Creation0 MATIC
0x9a3c0e9abf5c68b5cf97852ac56704b24879c6c495686c9eb2cb61b32ba604c8173276362021-07-27 15:31:121 day 7 hrs ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xacc2039cee7c8b85ca20bcf37f79051a9faca2b415dac97b40678c7e79a1765c173234292021-07-27 12:53:301 day 10 hrs ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xf14eb2fc96c1c4ad3961dc568d53987a79ce7a88530f3d550ac81079e4d4d7ae173193722021-07-27 10:17:301 day 12 hrs ago Aavegotchi: Opensea  Contract Creation0 MATIC
0xff1943517be440610c30e848f137e1d66afb067e130c11e1379675387b4b5f33173150862021-07-27 7:28:321 day 15 hrs ago Aavegotchi: Opensea  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Diamond

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-07-01
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.1;

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



// 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_);
}



/******************************************************************************\
* Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen)
/******************************************************************************/

interface IDiamondCut {
    enum FacetCutAction {Add, Replace, Remove}

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

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

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



library LibMeta {
    bytes32 internal constant EIP712_DOMAIN_TYPEHASH =
        keccak256(bytes("EIP712Domain(string name,string version,uint256 salt,address verifyingContract)"));

    function domainSeparator(string memory name, string memory version) internal view returns (bytes32 domainSeparator_) {
        domainSeparator_ = keccak256(
            abi.encode(EIP712_DOMAIN_TYPEHASH, keccak256(bytes(name)), keccak256(bytes(version)), getChainID(), address(this))
        );
    }

    function getChainID() internal view returns (uint256 id) {
        assembly {
            id := chainid()
        }
    }

    function msgSender() internal view returns (address sender_) {
        if (msg.sender == address(this)) {
            bytes memory array = msg.data;
            uint256 index = msg.data.length;
            assembly {
                // Load the 32 bytes word from memory with the address on the lower 20 bytes, and mask those.
                sender_ := and(mload(add(array, index)), 0xffffffffffffffffffffffffffffffffffffffff)
            }
        } else {
            sender_ = msg.sender;
        }
    }
}



/******************************************************************************\
* Authors: Nick Mudge (https://twitter.com/mudgen)
*
* Implementation of a diamond.
/******************************************************************************/




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







/// @title ERC-173 Contract Ownership Standard
///  Note: the ERC-165 identifier for this interface is 0x7f5828d0
/* is ERC165 */
interface IERC173 {
    /// @notice Get the address of the owner
    /// @return owner_ The address of the owner.
    function owner() external view returns (address owner_);

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



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 enforceIsContractOwner() internal view {
        require(LibMeta.msgSender() == diamondStorage().contractOwner, "LibDiamond: Must be contract owner");
    }

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

    function addDiamondFunctions(
        address _diamondCutFacet,
        address _diamondLoupeFacet,
        address _ownershipFacet
    ) internal {
        IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](3);
        bytes4[] memory functionSelectors = new bytes4[](1);
        functionSelectors[0] = IDiamondCut.diamondCut.selector;
        cut[0] = IDiamondCut.FacetCut({facetAddress: _diamondCutFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors});
        functionSelectors = new bytes4[](5);
        functionSelectors[0] = IDiamondLoupe.facets.selector;
        functionSelectors[1] = IDiamondLoupe.facetFunctionSelectors.selector;
        functionSelectors[2] = IDiamondLoupe.facetAddresses.selector;
        functionSelectors[3] = IDiamondLoupe.facetAddress.selector;
        functionSelectors[4] = IERC165.supportsInterface.selector;
        cut[1] = IDiamondCut.FacetCut({
            facetAddress: _diamondLoupeFacet,
            action: IDiamondCut.FacetCutAction.Add,
            functionSelectors: functionSelectors
        });
        functionSelectors = new bytes4[](2);
        functionSelectors[0] = IERC173.transferOwnership.selector;
        functionSelectors[1] = IERC173.owner.selector;
        cut[2] = IDiamondCut.FacetCut({facetAddress: _ownershipFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors});
        diamondCut(cut, address(0), "");
    }

    // 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 == false) {
                if (error.length > 0) {
                    // bubble up the error
                    revert(string(error));
                } 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);
    }
}




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




contract DiamondCutFacet is IDiamondCut {
    /// @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 override {
        LibDiamond.enforceIsContractOwner();
        LibDiamond.diamondCut(_diamondCut, _init, _calldata);
    }
}




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





contract DiamondLoupeFacet is IDiamondLoupe, IERC165 {
    // Diamond Loupe Functions
    ////////////////////////////////////////////////////////////////////
    /// These functions are expected to be called frequently by tools.
    //
    // struct Facet {
    //     address facetAddress;
    //     bytes4[] functionSelectors;
    // }

    /// @notice Gets all facets and their selectors.
    /// @return facets_ Facet
    function facets() external view override returns (Facet[] memory facets_) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        uint256 numFacets = ds.facetAddresses.length;
        facets_ = new Facet[](numFacets);
        for (uint256 i; i < numFacets; i++) {
            address facetAddress_ = ds.facetAddresses[i];
            facets_[i].facetAddress = facetAddress_;
            facets_[i].functionSelectors = ds.facetFunctionSelectors[facetAddress_].functionSelectors;
        }
    }

    /// @notice Gets all the function selectors provided by a facet.
    /// @param _facet The facet address.
    /// @return facetFunctionSelectors_
    function facetFunctionSelectors(address _facet) external view override returns (bytes4[] memory facetFunctionSelectors_) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        facetFunctionSelectors_ = ds.facetFunctionSelectors[_facet].functionSelectors;
    }

    /// @notice Get all the facet addresses used by a diamond.
    /// @return facetAddresses_
    function facetAddresses() external view override returns (address[] memory facetAddresses_) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        facetAddresses_ = ds.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 override returns (address facetAddress_) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        facetAddress_ = ds.selectorToFacetAndPosition[_functionSelector].facetAddress;
    }

    // This implements ERC-165.
    function supportsInterface(bytes4 _interfaceId) external view override returns (bool) {
        LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
        return ds.supportedInterfaces[_interfaceId];
    }
}







contract OwnershipFacet is IERC173 {
    function transferOwnership(address _newOwner) external override {
        LibDiamond.enforceIsContractOwner();
        LibDiamond.setContractOwner(_newOwner);
    }

    function owner() external view override returns (address owner_) {
        owner_ = LibDiamond.contractOwner();
    }
}


contract Diamond {
    constructor(address _contractOwner) {
        LibDiamond.setContractOwner(_contractOwner);
        LibDiamond.addDiamondFunctions(address(new DiamondCutFacet()), address(new DiamondLoupeFacet()), address(new OwnershipFacet()));
    }

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

Contract ABI

[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"}]

60806040523480156200001157600080fd5b5060405162005112380380620051128339810160408190526200003491620012d1565b6200004a81620000ea60201b620000951760201c565b620000e36040516200005c9062001288565b604051809103906000f08015801562000079573d6000803e3d6000fd5b50604051620000889062001296565b604051809103906000f080158015620000a5573d6000803e3d6000fd5b50604051620000b490620012a4565b604051809103906000f080158015620000d1573d6000803e3d6000fd5b506200014c60201b620000f51760201c565b50620018b3565b6000620000f662000531565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60408051600380825260808201909252600091816020015b6200016e620012b2565b815260200190600190039081620001645750506040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b81600081518110620001d157634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03871681529081016000815260200182815250826000815181106200023057634e487b7160e01b600052603260045260246000fd5b602090810291909101015260408051600580825260c0820190925290816020016020820280368337019050509050637a0ed62760e01b816000815181106200028857634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b9082906001908110620002ce57634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060029081106200031457634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b90829060039081106200035a57634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516301ffc9a760e01b9082906004908110620003a057634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b0386168152908101600081526020018281525082600181518110620003ff57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152604080516002808252606082019092529081602001602082028036833701905050905063f2fde38b60e01b816000815181106200045757634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319909216602092830291909101909101528051638da5cb5b60e01b90829060019081106200049d57634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b0385168152908101600081526020018281525082600281518110620004fc57634e487b7160e01b600052603260045260246000fd5b60200260200101819052506200052a826000604051806020016040528060008152506200055560201b60201c565b5050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b60005b8351811015620007ae5760008482815181106200058557634e487b7160e01b600052603260045260246000fd5b602002602001015160200151905060006002811115620005b557634e487b7160e01b600052602160045260246000fd5b816002811115620005d657634e487b7160e01b600052602160045260246000fd5b14156200064d57620006478583815181106200060257634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106200062f57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151620007fd60201b60201c565b62000798565b60018160028111156200067057634e487b7160e01b600052602160045260246000fd5b1415620006e157620006478583815181106200069c57634e487b7160e01b600052603260045260246000fd5b602002602001015160000151868481518110620006c957634e487b7160e01b600052603260045260246000fd5b60200260200101516040015162000a3660201b60201c565b60028160028111156200070457634e487b7160e01b600052602160045260246000fd5b14156200077557620006478583815181106200073057634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106200075d57634e487b7160e01b600052603260045260246000fd5b60200260200101516040015162000c8b60201b60201c565b60405162461bcd60e51b81526004016200078f90620015bc565b60405180910390fd5b5080620007a5816200187f565b91505062000558565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620007e4939291906200135a565b60405180910390a1620007f8828262000d73565b505050565b6000815111620008215760405162461bcd60e51b81526004016200078f9062001514565b60006200082d62000531565b90506001600160a01b038316620008585760405162461bcd60e51b81526004016200078f9062001603565b6001600160a01b038316600090815260018201602052604090205461ffff8116620008fe57620008a284604051806060016040528060248152602001620050ee6024913962000eb1565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156200052a5760008482815181106200092e57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620009815760405162461bcd60e51b81526004016200078f90620016fa565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff8716021790558362000a1b816200185a565b9450505050808062000a2d906200187f565b91505062000901565b600081511162000a5a5760405162461bcd60e51b81526004016200078f9062001514565b600062000a6662000531565b90506001600160a01b03831662000a915760405162461bcd60e51b81526004016200078f9062001603565b6001600160a01b038316600090815260018201602052604090205461ffff811662000b375762000adb84604051806060016040528060248152602001620050ee6024913962000eb1565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156200052a57600084828151811062000b6757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681141562000bc05760405162461bcd60e51b81526004016200078f9062001757565b62000bcc818362000ed5565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000c70816200185a565b9450505050808062000c82906200187f565b91505062000b3a565b600081511162000caf5760405162461bcd60e51b81526004016200078f9062001514565b600062000cbb62000531565b90506001600160a01b0383161562000ce75760405162461bcd60e51b81526004016200078f90620017b4565b60005b825181101562000d6d57600083828151811062000d1757634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000d55818362000ed5565b5050808062000d64906200187f565b91505062000cea565b50505050565b6001600160a01b03821662000daa5780511562000da45760405162461bcd60e51b81526004016200078f9062001471565b62000ead565b600081511162000dce5760405162461bcd60e51b81526004016200078f906200164f565b6001600160a01b038216301462000e045762000e0482604051806060016040528060288152602001620050c66028913962000eb1565b600080836001600160a01b03168360405162000e2191906200133c565b600060405180830381855af49150503d806000811462000e5e576040519150601f19603f3d011682016040523d82523d6000602084013e62000e63565b606091505b5090925090508162000d6d5780511562000e93578060405162461bcd60e51b81526004016200078f91906200145c565b60405162461bcd60e51b81526004016200078f90620014ce565b5050565b813b818162000d6d5760405162461bcd60e51b81526004016200078f91906200145c565b600062000ee162000531565b90506001600160a01b03831662000f0c5760405162461bcd60e51b81526004016200078f906200155f565b6001600160a01b03831630141562000f385760405162461bcd60e51b81526004016200078f90620016ac565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff16929162000f849162001811565b90508082146200108f576001600160a01b0385166000908152600184016020526040812080548390811062000fc957634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b9250829190859081106200102957634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480620010c757634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b0319169055806200052a576002830154600090620011369060019062001811565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214620012145760008560020183815481106200118957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b039092169250829184908110620011c957634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b846002018054806200123657634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b6116e4806200309e83390190565b61068e806200478283390190565b6102b68062004e1083390190565b6040805160608082018352600080835260208301529181019190915290565b600060208284031215620012e3578081fd5b81516001600160a01b0381168114620012fa578182fd5b9392505050565b6001600160a01b03169052565b60008151808452620013288160208601602086016200182b565b601f01601f19169290920160200192915050565b60008251620013508184602087016200182b565b9190910192915050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b848110156200142957898303607f19018652815180516001600160a01b03168452848101518985019060038110620013c657634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b80831015620014135783516001600160e01b0319168252928701926001929092019190870190620013e7565b5097860197945050509083019060010162001380565b5050620014398289018b62001301565b87810360408901526200144d818a6200130e565b9b9a5050505050505050505050565b600060208252620012fa60208301846200130e565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60408201527f6e207468617420616c7265616479206578697374730000000000000000000000606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260408201527f657373206d757374206265206164647265737328302900000000000000000000606082015260800190565b6000828210156200182657620018266200189d565b500390565b60005b83811015620018485781810151838201526020016200182e565b8381111562000d6d5750506000910152565b600061ffff808316818114156200187557620018756200189d565b6001019392505050565b60006000198214156200189657620018966200189d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6117db80620018c36000396000f3fe60806040908152600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c60208190529190205481906001600160a01b0316806100715760405162461bcd60e51b8152600401610068906114db565b60405180910390fd5b3660008037600080366000845af43d6000803e808015610090573d6000f35b3d6000fd5b600061009f6104c4565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60408051600380825260808201909252600091816020015b610115611176565b81526020019060019003908161010d5750506040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b8160008151811061017657634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b03871681529081016000815260200182815250826000815181106101d457634e487b7160e01b600052603260045260246000fd5b602090810291909101015260408051600580825260c0820190925290816020016020820280368337019050509050637a0ed62760e01b8160008151811061022b57634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b908290600190811061027057634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060029081106102b557634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b90829060039081106102fa57634e487b7160e01b600052603260045260246000fd5b6001600160e01b03199092166020928302919091019091015280516301ffc9a760e01b908290600490811061033f57634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b038616815290810160008152602001828152508260018151811061039d57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152604080516002808252606082019092529081602001602082028036833701905050905063f2fde38b60e01b816000815181106103f457634e487b7160e01b600052603260045260246000fd5b6001600160e01b0319909216602092830291909101909101528051638da5cb5b60e01b908290600190811061043957634e487b7160e01b600052603260045260246000fd5b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b038516815290810160008152602001828152508260028151811061049757634e487b7160e01b600052603260045260246000fd5b60200260200101819052506104bd826000604051806020016040528060008152506104e8565b5050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b60005b835181101561070b57600084828151811061051657634e487b7160e01b600052603260045260246000fd5b60200260200101516020015190506000600281111561054557634e487b7160e01b600052602160045260246000fd5b81600281111561056557634e487b7160e01b600052602160045260246000fd5b14156105d0576105cb85838151811061058e57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106105ba57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610756565b6106f8565b60018160028111156105f257634e487b7160e01b600052602160045260246000fd5b1415610658576105cb85838151811061061b57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061064757634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610979565b600281600281111561067a57634e487b7160e01b600052602160045260246000fd5b14156106e0576105cb8583815181106106a357634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106106cf57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610bb6565b60405162461bcd60e51b815260040161006890611448565b508061070381611728565b9150506104eb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161073f939291906111ea565b60405180910390a16107518282610c8f565b505050565b60008151116107775760405162461bcd60e51b8152600401610068906113a0565b60006107816104c4565b90506001600160a01b0383166107a95760405162461bcd60e51b81526004016100689061148f565b6001600160a01b038316600090815260018201602052604090205461ffff811661084b576107ef8460405180606001604052806024815260200161178260249139610db7565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156104bd57600084828151811061087957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156108c95760405162461bcd60e51b8152600401610068906115bb565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff8716021790558361096181611706565b9450505050808061097190611728565b91505061084e565b600081511161099a5760405162461bcd60e51b8152600401610068906113a0565b60006109a46104c4565b90506001600160a01b0383166109cc5760405162461bcd60e51b81526004016100689061148f565b6001600160a01b038316600090815260018201602052604090205461ffff8116610a6e57610a128460405180606001604052806024815260200161178260249139610db7565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156104bd576000848281518110610a9c57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03908116908716811415610af25760405162461bcd60e51b815260040161006890611610565b610afc8183610dd8565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583610b9e81611706565b94505050508080610bae90611728565b915050610a71565b6000815111610bd75760405162461bcd60e51b8152600401610068906113a0565b6000610be16104c4565b90506001600160a01b03831615610c0a5760405162461bcd60e51b81526004016100689061166d565b60005b8251811015610c89576000838281518110610c3857634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b0316610c748183610dd8565b50508080610c8190611728565b915050610c0d565b50505050565b6001600160a01b038216610cc157805115610cbc5760405162461bcd60e51b8152600401610068906112fd565b610db3565b6000815111610ce25760405162461bcd60e51b815260040161006890611510565b6001600160a01b0382163014610d1457610d148260405180606001604052806028815260200161175a60289139610db7565b600080836001600160a01b031683604051610d2f91906111ce565b600060405180830381855af49150503d8060008114610d6a576040519150601f19603f3d011682016040523d82523d6000602084013e610d6f565b606091505b50909250905081610c8957805115610d9b578060405162461bcd60e51b815260040161006891906112e3565b60405162461bcd60e51b81526004016100689061135a565b5050565b813b8181610c895760405162461bcd60e51b815260040161006891906112e3565b6000610de26104c4565b90506001600160a01b038316610e0a5760405162461bcd60e51b8152600401610068906113eb565b6001600160a01b038316301415610e335760405162461bcd60e51b81526004016100689061156d565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610e7d916116c3565b9050808214610f85576001600160a01b03851660009081526001840160205260408120805483908110610ec057634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610f1f57634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610fbc57634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b0319169055806104bd576002830154600090611028906001906116c3565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff1680821461110357600085600201838154811061107957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b0390921692508291849081106110b857634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b8460020180548061112457634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b6040805160608082018352600080835260208301529181019190915290565b6001600160a01b03169052565b600081518084526111ba8160208601602086016116da565b601f01601f19169290920160200192915050565b600082516111e08184602087016116da565b9190910192915050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b848110156112b457898303607f19018652815180516001600160a01b0316845284810151898501906003811061125457634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b8083101561129f5783516001600160e01b0319168252928701926001929092019190870190611275565b50978601979450505090830190600101611210565b50506112c28289018b611195565b87810360408901526112d4818a6111a2565b9b9a5050505050505050505050565b6000602082526112f660208301846111a2565b9392505050565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252818101527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374604082015260600190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6040820152746e207468617420616c72656164792065786973747360581b606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604082015275657373206d757374206265206164647265737328302960501b606082015260800190565b6000828210156116d5576116d5611743565b500390565b60005b838110156116f55781810151838201526020016116dd565b83811115610c895750506000910152565b600061ffff8083168181141561171e5761171e611743565b6001019392505050565b600060001982141561173c5761173c611743565b5060010190565b634e487b7160e01b600052601160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220991a48ccf95d04c6fbc41dc5d88d2e9e3df219a6ab5d9c3cce53f2c4f8cf9cd064736f6c63430008010033608060405234801561001057600080fd5b506116c4806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004361003e366004610e17565b610045565b005b61004d61009e565b61009761005a8587611490565b8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506100ec92505050565b5050505050565b6100a661035a565b600401546001600160a01b03166100bb61037e565b6001600160a01b0316146100ea5760405162461bcd60e51b81526004016100e1906110f4565b60405180910390fd5b565b60005b835181101561030f57600084828151811061011a57634e487b7160e01b600052603260045260246000fd5b60200260200101516020015190506000600281111561014957634e487b7160e01b600052602160045260246000fd5b81600281111561016957634e487b7160e01b600052602160045260246000fd5b14156101d4576101cf85838151811061019257634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106101be57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516103db565b6102fc565b60018160028111156101f657634e487b7160e01b600052602160045260246000fd5b141561025c576101cf85838151811061021f57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061024b57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516105fe565b600281600281111561027e57634e487b7160e01b600052602160045260246000fd5b14156102e4576101cf8583815181106102a757634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106102d357634e487b7160e01b600052603260045260246000fd5b60200260200101516040015161083b565b60405162461bcd60e51b81526004016100e1906111de565b5080610307816115fb565b9150506100ef565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161034393929190610f3e565b60405180910390a16103558282610914565b505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6000333014156103d557600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506103d89050565b50335b90565b60008151116103fc5760405162461bcd60e51b81526004016100e190611136565b600061040661035a565b90506001600160a01b03831661042e5760405162461bcd60e51b81526004016100e190611225565b6001600160a01b038316600090815260018201602052604090205461ffff81166104d0576104748460405180606001604052806024815260200161166b60249139610a3c565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b83518110156100975760008482815181106104fe57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0316801561054e5760405162461bcd60e51b81526004016100e19061131c565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff871602179055836105e6816115d9565b945050505080806105f6906115fb565b9150506104d3565b600081511161061f5760405162461bcd60e51b81526004016100e190611136565b600061062961035a565b90506001600160a01b0383166106515760405162461bcd60e51b81526004016100e190611225565b6001600160a01b038316600090815260018201602052604090205461ffff81166106f3576106978460405180606001604052806024815260200161166b60249139610a3c565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561009757600084828151811061072157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168114156107775760405162461bcd60e51b81526004016100e190611371565b6107818183610a5d565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583610823816115d9565b94505050508080610833906115fb565b9150506106f6565b600081511161085c5760405162461bcd60e51b81526004016100e190611136565b600061086661035a565b90506001600160a01b0383161561088f5760405162461bcd60e51b81526004016100e1906113ce565b60005b825181101561090e5760008382815181106108bd57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b03166108f98183610a5d565b50508080610906906115fb565b915050610892565b50505050565b6001600160a01b038216610946578051156109415760405162461bcd60e51b81526004016100e190611051565b610a38565b60008151116109675760405162461bcd60e51b81526004016100e190611271565b6001600160a01b0382163014610999576109998260405180606001604052806028815260200161164360289139610a3c565b600080836001600160a01b0316836040516109b49190610f22565b600060405180830381855af49150503d80600081146109ef576040519150601f19603f3d011682016040523d82523d6000602084013e6109f4565b606091505b5090925090508161090e57805115610a20578060405162461bcd60e51b81526004016100e19190611037565b60405162461bcd60e51b81526004016100e1906110ae565b5050565b813b818161090e5760405162461bcd60e51b81526004016100e19190611037565b6000610a6761035a565b90506001600160a01b038316610a8f5760405162461bcd60e51b81526004016100e190611181565b6001600160a01b038316301415610ab85760405162461bcd60e51b81526004016100e1906112ce565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610b0291611479565b9050808214610c0a576001600160a01b03851660009081526001840160205260408120805483908110610b4557634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610ba457634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610c4157634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b031916905580610097576002830154600090610cad90600190611479565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610d88576000856002018381548110610cfe57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b039092169250829184908110610d3d57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610da957634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b80356001600160a01b0381168114610e1257600080fd5b919050565b600080600080600060608688031215610e2e578081fd5b853567ffffffffffffffff80821115610e45578283fd5b818801915088601f830112610e58578283fd5b813581811115610e66578384fd5b60208a818284028601011115610e7a578485fd5b8084019850819750610e8d818b01610dfb565b965060408a0135935082841115610ea2578485fd5b838a0193508a601f850112610eb5578485fd5b8335915082821115610ec5578485fd5b8a81838601011115610ed5578485fd5b979a96995094975050909401935090919050565b6001600160a01b03169052565b60008151808452610f0e8160208601602086016115ad565b601f01601f19169290920160200192915050565b60008251610f348184602087016115ad565b9190910192915050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b8481101561100857898303607f19018652815180516001600160a01b03168452848101518985019060038110610fa857634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b80831015610ff35783516001600160e01b0319168252928701926001929092019190870190610fc9565b50978601979450505090830190600101610f64565b50506110168289018b610ee9565b8781036040890152611028818a610ef6565b9b9a5050505050505050505050565b60006020825261104a6020830184610ef6565b9392505050565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b60208082526022908201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60408201526132b960f11b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6040820152746e207468617420616c72656164792065786973747360581b606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604082015275657373206d757374206265206164647265737328302960501b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561144d5761144d61162c565b604052919050565b600067ffffffffffffffff82111561146f5761146f61162c565b5060209081020190565b60008282101561148b5761148b611616565b500390565b60006114a361149e84611455565b611424565b8381526020808201919084845b878110156115a1578135870160608082360312156114cc578788fd5b6114d581611424565b90506114e082610dfb565b815284820135600381106114f2578889fd5b8186015260408281013567ffffffffffffffff81111561151057898afd5b929092019136601f840112611523578889fd5b823561153161149e82611455565b81815287810190858901368a850288018b01111561154d578c8dfd5b8c96505b838710156115845780356001600160e01b031981168114611570578d8efd5b835260019690960195918901918901611551565b5092840192909252505086525093820193908201906001016114b0565b50919695505050505050565b60005b838110156115c85781810151838201526020016115b0565b8381111561090e5750506000910152565b600061ffff808316818114156115f1576115f1611616565b6001019392505050565b600060001982141561160f5761160f611616565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220d92c2242b54ddf70b61c6705a16641c554201aeab7b3b82072c87efc6eac051064736f6c63430008010033608060405234801561001057600080fd5b5061066e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806301ffc9a71461005c57806352ef6b2c146100855780637a0ed6271461009a578063adfca15e146100af578063cdffacc6146100cf575b600080fd5b61006f61006a3660046104ac565b6100ef565b60405161007c9190610606565b60405180910390f35b61008d610122565b60405161007c919061052c565b6100a261018e565b60405161007c919061058c565b6100c26100bd36600461047e565b610363565b60405161007c9190610579565b6100e26100dd3660046104ac565b61040d565b60405161007c9190610518565b6000806100fa610442565b6001600160e01b0319841660009081526003909101602052604090205460ff16915050919050565b6060600061012e610442565b6002810180546040805160208084028201810190925282815293945083018282801561018357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610165575b505050505091505090565b6060600061019a610442565b60028101549091508067ffffffffffffffff8111156101c957634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561020257816020015b6101ef610466565b8152602001906001900390816101e75790505b50925060005b8181101561035d57600083600201828154811061023557634e487b7160e01b600052603260045260246000fd5b9060005260206000200160009054906101000a90046001600160a01b031690508085838151811061027657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03928316905290821660009081526001860182526040908190208054825181850281018501909352808352919290919083018282801561031557602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116102d75790505b505050505085838151811061033a57634e487b7160e01b600052603260045260246000fd5b60200260200101516020018190525050808061035590610611565b915050610208565b50505090565b6060600061036f610442565b6001600160a01b0384166000908152600182016020908152604091829020805483518184028101840190945280845293945091929083018282801561040057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116103c25790505b5050505050915050919050565b600080610418610442565b6001600160e01b03199093166000908152602093909352505060409020546001600160a01b031690565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b60408051808201909152600081526060602082015290565b60006020828403121561048f578081fd5b81356001600160a01b03811681146104a5578182fd5b9392505050565b6000602082840312156104bd578081fd5b81356001600160e01b0319811681146104a5578182fd5b6000815180845260208085019450808401835b8381101561050d5781516001600160e01b031916875295820195908201906001016104e7565b509495945050505050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b8181101561056d5783516001600160a01b031683529284019291840191600101610548565b50909695505050505050565b6000602082526104a560208301846104d4565b60208082528251828201819052600091906040908185019080840286018301878501865b838110156105f857888303603f19018552815180516001600160a01b031684528701518784018790526105e5878501826104d4565b95880195935050908601906001016105b0565b509098975050505050505050565b901515815260200190565b600060001982141561063157634e487b7160e01b81526011600452602481fd5b506001019056fea2646970667358221220e974872b33a9693d2454ffea8295365d6ebcbeb98aa6df766605c218fab9a65a64736f6c63430008010033608060405234801561001057600080fd5b50610296806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b14610059575b600080fd5b61004361006e565b604051610050919061020a565b60405180910390f35b61006c6100673660046101dc565b61007d565b005b6000610078610091565b905090565b6100856100ad565b61008e816100fb565b50565b600061009b61015b565b600401546001600160a01b0316919050565b6100b561015b565b600401546001600160a01b03166100ca61017f565b6001600160a01b0316146100f95760405162461bcd60e51b81526004016100f09061021e565b60405180910390fd5b565b600061010561015b565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6000333014156101d657600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506101d99050565b50335b90565b6000602082840312156101ed578081fd5b81356001600160a01b0381168114610203578182fd5b9392505050565b6001600160a01b0391909116815260200190565b60208082526022908201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f776e60408201526132b960f11b60608201526080019056fea2646970667358221220e271d514a26b086cf723d279217d51c7e4c57ca51ff9152a4bf0a36b2bf8a55764736f6c634300080100334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465000000000000000000000000819c3fc356bb319035f9d2886fac9e57df0343f5

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

000000000000000000000000819c3fc356bb319035f9d2886fac9e57df0343f5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000819c3fc356bb319035f9d2886fac9e57df0343f5


Deployed ByteCode Sourcemap

21817:1184:0:-:0;;;;;22246:36;22468:7;;-1:-1:-1;;;;;;22468:7:0;22438:38;;5411:45;22438:38;;;;;;;:51;5411:45;;-1:-1:-1;;;;;22438:51:0;;22500:64;;;;-1:-1:-1;;;22500:64:0;;;;;;;:::i;:::-;;;;;;;;;22618:14;22615:1;22612;22599:34;22710:1;22707;22691:14;22688:1;22681:5;22674;22661:51;22747:16;22744:1;22741;22726:38;22785:6;22809:76;;;;22944:16;22941:1;22934:27;22809:76;22849:16;22846:1;22839:27;6805:269;6870:25;6898:16;:14;:16::i;:::-;6949;;;;;-1:-1:-1;;;;;6976:28:0;;;-1:-1:-1;;;;;;6976:28:0;;;;;;;7020:46;;6870:44;;-1:-1:-1;6949:16:0;;;;7020:46;;6925:21;;7020:46;6805:269;;;:::o;7496:1477::-;7694:29;;;7721:1;7694:29;;;;;;;;;7658:33;;7694:29;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;7770:15:0;;;7783:1;7770:15;;;;;;;;;7658:65;;-1:-1:-1;7734:33:0;;7770:15;;;;;;;;;;;;-1:-1:-1;7770:15:0;7734:51;;7819:31;;;7796:17;7814:1;7796:20;;;;;;-1:-1:-1;;;7796:20:0;;;;;;;;;-1:-1:-1;;;;;;7796:54:0;;;:20;;;;;;;;;;:54;7870:132;;;;;;;;;-1:-1:-1;;;;;7870:132:0;;;;;;;-1:-1:-1;7870:132:0;;;;7983:17;7870:132;;;7861:3;7865:1;7861:6;;;;;;-1:-1:-1;;;7861:6:0;;;;;;;;;;;;;;;;;;:141;8033:15;;;8046:1;8033:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8033:15:0;8013:35;;8082:29;;;8059:17;8077:1;8059:20;;;;;;-1:-1:-1;;;8059:20:0;;;;;;;;;-1:-1:-1;;;;;;8059:52:0;;;:20;;;;;;;;;;;:52;8122:20;;-1:-1:-1;;;8145:45:0;8122:17;;8140:1;;8122:20;;;;-1:-1:-1;;;8122:20:0;;;;;;;;;-1:-1:-1;;;;;;8122:68:0;;;:20;;;;;;;;;;;:68;8201:20;;-1:-1:-1;;;8224:37:0;8201:17;;8219:1;;8201:20;;;;-1:-1:-1;;;8201:20:0;;;;;;;;;-1:-1:-1;;;;;;8201:60:0;;;:20;;;;;;;;;;;:60;8272:20;;-1:-1:-1;;;8295:35:0;8272:17;;8290:1;;8272:20;;;;-1:-1:-1;;;8272:20:0;;;;;;;;;-1:-1:-1;;;;;;8272:58:0;;;:20;;;;;;;;;;;:58;8341:20;;-1:-1:-1;;;8364:34:0;8341:17;;8359:1;;8341:20;;;;-1:-1:-1;;;8341:20:0;;;;;;;;;-1:-1:-1;;;;;;8341:57:0;;;:20;;;;;;;;;;:57;8418:184;;;;;;;;;-1:-1:-1;;;;;8418:184:0;;;;;;;-1:-1:-1;8418:184:0;;;;8573:17;8418:184;;;8409:3;8413:1;8409:6;;;;;;-1:-1:-1;;;8409:6:0;;;;;;;;;;;;;;;;;;:193;8633:15;;;8646:1;8633:15;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8633:15:0;8613:35;;8682:34;;;8659:17;8677:1;8659:20;;;;;;-1:-1:-1;;;8659:20:0;;;;;;;;;-1:-1:-1;;;;;;8659:57:0;;;:20;;;;;;;;;;;:57;8727:20;;-1:-1:-1;;;8750:22:0;8727:17;;8745:1;;8727:20;;;;-1:-1:-1;;;8727:20:0;;;;;;;;;-1:-1:-1;;;;;;8727:45:0;;;:20;;;;;;;;;;:45;8792:131;;;;;;;;;-1:-1:-1;;;;;8792:131:0;;;;;;;-1:-1:-1;8792:131:0;;;;8904:17;8792:131;;;8783:3;8787:1;8783:6;;;;;;-1:-1:-1;;;8783:6:0;;;;;;;;;;;;;;:140;;;;8934:31;8945:3;8958:1;8934:31;;;;;;;;;;;;:10;:31::i;:::-;7496:1477;;;;;:::o;6503:202::-;5411:45;;6653:::o;9029:1086::-;9190:18;9185:817;9223:11;:18;9210:10;:31;9185:817;;;9272:33;9308:11;9320:10;9308:23;;;;;;-1:-1:-1;;;9308:23:0;;;;;;;;;;;;;;;:30;;;9272:66;;9367:30;9357:40;;;;;;-1:-1:-1;;;9357:40:0;;;;;;;;;:6;:40;;;;;;-1:-1:-1;;;9357:40:0;;;;;;;;;;9353:638;;;9418:93;9431:11;9443:10;9431:23;;;;;;-1:-1:-1;;;9431:23:0;;;;;;;;;;;;;;;:36;;;9469:11;9481:10;9469:23;;;;;;-1:-1:-1;;;9469:23:0;;;;;;;;;;;;;;;:41;;;9418:12;:93::i;:::-;9353:638;;;9547:34;9537:6;:44;;;;;;-1:-1:-1;;;9537:44:0;;;;;;;;;;9533:458;;;9602:97;9619:11;9631:10;9619:23;;;;;;-1:-1:-1;;;9619:23:0;;;;;;;;;;;;;;;:36;;;9657:11;9669:10;9657:23;;;;;;-1:-1:-1;;;9657:23:0;;;;;;;;;;;;;;;:41;;;9602:16;:97::i;9533:458::-;9735:33;9725:6;:43;;;;;;-1:-1:-1;;;9725:43:0;;;;;;;;;;9721:270;;;9789:96;9805:11;9817:10;9805:23;;;;;;-1:-1:-1;;;9805:23:0;;;;;;;;;;;;;;;:36;;;9843:11;9855:10;9843:23;;;;;;-1:-1:-1;;;9843:23:0;;;;;;;;;;;;;;;:41;;;9789:15;:96::i;9721:270::-;9926:49;;-1:-1:-1;;;9926:49:0;;;;;;;:::i;9721:270::-;-1:-1:-1;9243:12:0;;;;:::i;:::-;;;;9185:817;;;;10017:41;10028:11;10041:5;10048:9;10017:41;;;;;;;;:::i;:::-;;;;;;;;10069:38;10090:5;10097:9;10069:20;:38::i;:::-;9029:1086;;;:::o;10123:1572::-;10260:1;10232:18;:25;:29;10224:85;;;;-1:-1:-1;;;10224:85:0;;;;;;;:::i;:::-;10320:25;10348:16;:14;:16::i;:::-;10320:44;-1:-1:-1;;;;;;10461:27:0;;10453:84;;;;-1:-1:-1;;;10453:84:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10581:40:0;;10548:23;10581:40;;;:25;;;:40;;;;;:65;10717:21;;;10713:294;;10755:77;10778:13;10755:77;;;;;;;;;;;;;;;;;:22;:77::i;:::-;10918:17;;;:24;;-1:-1:-1;;;;;10847:40:0;;;;;;:25;;;;:40;;;;;;;:61;;:96;;-1:-1:-1;;10847:96:0;;;;;;;;;;;;10958:37;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10958:37:0;;;;;;10713:294;11022:21;11017:671;11061:18;:25;11045:13;:41;11017:671;;;11120:15;11138:18;11157:13;11138:33;;;;;;-1:-1:-1;;;11138:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11212:39:0;;11186:23;11212:39;;;;;;;;;;;:52;11138:33;;-1:-1:-1;;;;;;11212:52:0;11287:29;;11279:95;;;;-1:-1:-1;;;11279:95:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11389:40:0;;;;;;:25;;;;:40;;;;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11477:39:0;;;;;;;;;:68;;-1:-1:-1;;;;;;11477:68:0;;;;-1:-1:-1;;;;11560:83:0;-1:-1:-1;;;11560:83:0;;;;;;;;11658:18;11560:83;11658:18;:::i;:::-;;;;11017:671;;11088:15;;;;;:::i;:::-;;;;11017:671;;11703:1589;11844:1;11816:18;:25;:29;11808:85;;;;-1:-1:-1;;;11808:85:0;;;;;;;:::i;:::-;11904:25;11932:16;:14;:16::i;:::-;11904:44;-1:-1:-1;;;;;;11967:27:0;;11959:84;;;;-1:-1:-1;;;11959:84:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12087:40:0;;12054:23;12087:40;;;:25;;;:40;;;;;:65;12223:21;;;12219:294;;12261:77;12284:13;12261:77;;;;;;;;;;;;;;;;;:22;:77::i;:::-;12424:17;;;:24;;-1:-1:-1;;;;;12353:40:0;;;;;;:25;;;;:40;;;;;;;:61;;:96;;-1:-1:-1;;12353:96:0;;;;;;;;;;;;12464:37;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12464:37:0;;;;;;12219:294;12528:21;12523:762;12567:18;:25;12551:13;:41;12523:762;;;12626:15;12644:18;12663:13;12644:33;;;;;;-1:-1:-1;;;12644:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12718:39:0;;12692:23;12718:39;;;;;;;;;;;:52;12644:33;;-1:-1:-1;;;;;;12718:52:0;;;;12793:32;;;;;12785:101;;;;-1:-1:-1;;;12785:101:0;;;;;;;:::i;:::-;12901:41;12916:15;12933:8;12901:14;:41::i;:::-;-1:-1:-1;;;;;;12986:39:0;;:29;:39;;;;;;;;;;;:83;;-1:-1:-1;;;;12986:83:0;-1:-1:-1;;;12986:83:0;;;;;;;-1:-1:-1;;;;;13084:40:0;;;;;-1:-1:-1;13084:25:0;;;:40;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;12986:83;13084:73;;;;;;;;;;;;;;;;;;;;;13172:39;;;;;;;:68;;-1:-1:-1;;;;;;13172:68:0;;;;12986:83;13255:18;12986:83;13255:18;:::i;:::-;;;;12523:762;;12594:15;;;;;:::i;:::-;;;;12523:762;;13300:748;13440:1;13412:18;:25;:29;13404:85;;;;-1:-1:-1;;;13404:85:0;;;;;;;:::i;:::-;13500:25;13528:16;:14;:16::i;:::-;13500:44;-1:-1:-1;;;;;;13629:27:0;;;13621:94;;;;-1:-1:-1;;;13621:94:0;;;;;;;:::i;:::-;13731:21;13726:315;13770:18;:25;13754:13;:41;13726:315;;;13829:15;13847:18;13866:13;13847:33;;;;;;-1:-1:-1;;;13847:33:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13921:39:0;;13895:23;13921:39;;;;;;;;;;;:52;13847:33;;-1:-1:-1;;;;;;13921:52:0;13988:41;13921:52;13847:33;13988:14;:41::i;:::-;13726:315;;13797:15;;;;;:::i;:::-;;;;13726:315;;;;13300:748;;;:::o;16312:897::-;-1:-1:-1;;;;;16405:19:0;;16401:801;;16449:16;;:21;16441:94;;;;-1:-1:-1;;;16441:94:0;;;;;;;:::i;:::-;16401:801;;;16595:1;16576:9;:16;:20;16568:94;;;;-1:-1:-1;;;16568:94:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16681:22:0;;16698:4;16681:22;16677:136;;16724:73;16747:5;16724:73;;;;;;;;;;;;;;;;;:22;:73::i;:::-;16828:12;16842:18;16864:5;-1:-1:-1;;;;;16864:18:0;16883:9;16864:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16827:66:0;;-1:-1:-1;16827:66:0;-1:-1:-1;16912:16:0;16908:283;;16953:12;;:16;16949:227;;17052:5;17038:21;;-1:-1:-1;;;17038:21:0;;;;;;;;:::i;16949:227::-;17108:48;;-1:-1:-1;;;17108:48:0;;;;;;;:::i;16401:801::-;16312:897;;:::o;17217:268::-;17393:22;;17463:13;17444:17;17436:41;;;;-1:-1:-1;;;17436:41:0;;;;;;;;:::i;14056:2248::-;14141:25;14169:16;:14;:16::i;:::-;14141:44;-1:-1:-1;;;;;;14204:27:0;;14196:95;;;;-1:-1:-1;;;14196:95:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14388:30:0;;14413:4;14388:30;;14380:89;;;;-1:-1:-1;;;14380:89:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;14582:40:0;;14555:24;14582:40;;;;;;;;;;;:65;-1:-1:-1;;;;;14689:40:0;;;;14757:1;14689:25;;;:40;;;;;;:65;-1:-1:-1;;;14582:65:0;;;;;;14555:24;14689:69;;;:::i;:::-;14658:100;;14862:20;14842:16;:40;14838:391;;-1:-1:-1;;;;;14921:40:0;;14899:19;14921:40;;;:25;;;:40;;;;;:80;;14980:20;;14921:80;;;;-1:-1:-1;;;14921:80:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15016:40:0;;;;:25;;;:40;;;;;;;:76;;14921:80;;;;;;;;;;;;;;-1:-1:-1;14921:80:0;;15016:40;15075:16;;15016:76;;;;-1:-1:-1;;;15016:76:0;;;;;;;;;;;;;;;;;;;;;:91;;;:76;;;;;;:91;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15122:43:0;;;;;;;;;;;;:95;;-1:-1:-1;;;;15122:95:0;-1:-1:-1;;;15122:95:0;;;;;;;14838:391;-1:-1:-1;;;;;15276:40:0;;;;;;:25;;;:40;;;;;:64;;;;;-1:-1:-1;;;15276:64:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;15276:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15358:40:0;;;;;;;;;;15351:47;;-1:-1:-1;;;;;;15351:47:0;;;15496:25;15492:805;;15665:17;;;:24;15630:32;;15665:28;;15692:1;;15665:28;:::i;:::-;-1:-1:-1;;;;;15739:40:0;;15708:28;15739:40;;;:25;;;;:40;;;;;;:61;;15630:63;;-1:-1:-1;15739:61:0;;15819:48;;;15815:350;;15888:24;15915:2;:17;;15933:24;15915:43;;;;;;-1:-1:-1;;;15915:43:0;;;;;;;;;;;;;;;;;;;15977:17;;;:39;;-1:-1:-1;;;;;15915:43:0;;;;-1:-1:-1;15915:43:0;;15995:20;;15977:39;;;;-1:-1:-1;;;15977:39:0;;;;;;;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;15977:58:0;-1:-1:-1;;;;;15977:58:0;;;;;;16054:43;;;;;;-1:-1:-1;16054:25:0;;;:43;;;;;;:64;:95;;-1:-1:-1;;16054:95:0;;;;;;;15815:350;16179:2;:17;;:23;;;;;-1:-1:-1;;;16179:23:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16179:23:0;;;;;-1:-1:-1;;;;;;16179:23:0;;;;;;;;;-1:-1:-1;;;;;16224:40:0;;;;16179:23;16224:25;;;:40;;;;;;;:61;16217:68;;-1:-1:-1;;16217:68:0;;;-1:-1:-1;;14056:2248:0;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:106:1:-;-1:-1:-1;;;;;82:31:1;70:44;;60:60::o;125:259::-;;206:5;200:12;233:6;228:3;221:19;249:63;305:6;298:4;293:3;289:14;282:4;275:5;271:16;249:63;:::i;:::-;366:2;345:15;-1:-1:-1;;341:29:1;332:39;;;;373:4;328:50;;176:208;-1:-1:-1;;176:208:1:o;389:274::-;;556:6;550:13;572:53;618:6;613:3;606:4;598:6;594:17;572:53;:::i;:::-;641:16;;;;;526:137;-1:-1:-1;;526:137:1:o;668:2103::-;961:2;1013:21;;;1083:13;;986:18;;;1105:22;;;668:2103;;961:2;1146:3;;1165:18;;;;1202:4;1248:15;;;1233:31;;1229:40;;1292:15;;;668:2103;1338:1258;1352:6;1349:1;1346:13;1338:1258;;;1417:22;;;-1:-1:-1;;1413:37:1;1401:50;;1474:13;;1561:9;;-1:-1:-1;;;;;1557:35:1;1542:51;;1632:11;;;1626:18;1514:15;;;;1684:1;1667:19;;1657:2;;-1:-1:-1;;;1718:34:1;;1779:4;1776:1;1769:15;1814:4;1725;1801:18;1657:2;1853:15;;;1846:37;1906:4;1951:11;;;1945:18;1983:15;;;1976:27;;;2064:21;;2098:24;;;;2188:23;;;;2235:4;;2144:15;;;;2252:236;2268:8;2263:3;2260:17;2252:236;;;2349:15;;-1:-1:-1;;;;;;2345:42:1;2331:57;;2457:17;;;;2296:1;2287:11;;;;;2414:14;;;;2252:236;;;-1:-1:-1;2574:12:1;;;;2511:5;-1:-1:-1;;;2539:15:1;;;;1374:1;1367:9;1338:1258;;;1342:3;;2605:48;2649:2;2638:9;2634:18;2626:6;2605:48;:::i;:::-;2703:9;2695:6;2691:22;2684:4;2673:9;2669:20;2662:52;2731:34;2758:6;2750;2731:34;:::i;:::-;2723:42;941:1830;-1:-1:-1;;;;;;;;;;;941:1830:1:o;2776:221::-;;2925:2;2914:9;2907:21;2945:46;2987:2;2976:9;2972:18;2964:6;2945:46;:::i;:::-;2937:54;2897:100;-1:-1:-1;;;2897:100:1:o;3002:424::-;3204:2;3186:21;;;3243:2;3223:18;;;3216:30;3282:34;3277:2;3262:18;;3255:62;3353:30;3348:2;3333:18;;3326:58;3416:3;3401:19;;3176:250::o;3431:402::-;3633:2;3615:21;;;3672:2;3652:18;;;3645:30;3711:34;3706:2;3691:18;;3684:62;-1:-1:-1;;;3777:2:1;3762:18;;3755:36;3823:3;3808:19;;3605:228::o;3838:407::-;4040:2;4022:21;;;4079:2;4059:18;;;4052:30;4118:34;4113:2;4098:18;;4091:62;-1:-1:-1;;;4184:2:1;4169:18;;4162:41;4235:3;4220:19;;4012:233::o;4250:419::-;4452:2;4434:21;;;4491:2;4471:18;;;4464:30;4530:34;4525:2;4510:18;;4503:62;4601:25;4596:2;4581:18;;4574:53;4659:3;4644:19;;4424:245::o;4674:403::-;4876:2;4858:21;;;4915:2;4895:18;;;4888:30;4954:34;4949:2;4934:18;;4927:62;-1:-1:-1;;;5020:2:1;5005:18;;4998:37;5067:3;5052:19;;4848:229::o;5082:408::-;5284:2;5266:21;;;5323:2;5303:18;;;5296:30;5362:34;5357:2;5342:18;;5335:62;-1:-1:-1;;;5428:2:1;5413:18;;5406:42;5480:3;5465:19;;5256:234::o;5495:356::-;5697:2;5679:21;;;5716:18;;;5709:30;5775:34;5770:2;5755:18;;5748:62;5842:2;5827:18;;5669:182::o;5856:425::-;6058:2;6040:21;;;6097:2;6077:18;;;6070:30;6136:34;6131:2;6116:18;;6109:62;6207:31;6202:2;6187:18;;6180:59;6271:3;6256:19;;6030:251::o;6286:410::-;6488:2;6470:21;;;6527:2;6507:18;;;6500:30;6566:34;6561:2;6546:18;;6539:62;-1:-1:-1;;;6632:2:1;6617:18;;6610:44;6686:3;6671:19;;6460:236::o;6701:417::-;6903:2;6885:21;;;6942:2;6922:18;;;6915:30;6981:34;6976:2;6961:18;;6954:62;-1:-1:-1;;;7047:2:1;7032:18;;7025:51;7108:3;7093:19;;6875:243::o;7123:420::-;7325:2;7307:21;;;7364:2;7344:18;;;7337:30;7403:34;7398:2;7383:18;;7376:62;7474:26;7469:2;7454:18;;7447:54;7533:3;7518:19;;7297:246::o;7548:418::-;7750:2;7732:21;;;7789:2;7769:18;;;7762:30;7828:34;7823:2;7808:18;;7801:62;-1:-1:-1;;;7894:2:1;7879:18;;7872:52;7956:3;7941:19;;7722:244::o;7971:125::-;;8039:1;8036;8033:8;8030:2;;;8044:18;;:::i;:::-;-1:-1:-1;8081:9:1;;8020:76::o;8101:258::-;8173:1;8183:113;8197:6;8194:1;8191:13;8183:113;;;8273:11;;;8267:18;8254:11;;;8247:39;8219:2;8212:10;8183:113;;;8314:6;8311:1;8308:13;8305:2;;;-1:-1:-1;;8349:1:1;8331:16;;8324:27;8154:205::o;8364:197::-;;8430:6;8471:2;8464:5;8460:14;8498:2;8489:7;8486:15;8483:2;;;8504:18;;:::i;:::-;8553:1;8540:15;;8410:151;-1:-1:-1;;;8410:151:1:o;8566:135::-;;-1:-1:-1;;8626:17:1;;8623:2;;;8646:18;;:::i;:::-;-1:-1:-1;8693:1:1;8682:13;;8613:88::o;8706:127::-;8767:10;8762:3;8758:20;8755:1;8748:31;8798:4;8795:1;8788:15;8822:4;8819:1;8812:15

Swarm Source

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