More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 5,647 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 60796176 | 2 hrs ago | IN | 0.00005875 AVAX | 0.00052452 | ||||
Claim | 60794805 | 2 hrs ago | IN | 0.00345344 AVAX | 0.00076527 | ||||
Compound | 60782120 | 7 hrs ago | IN | 0 AVAX | 0.00034769 | ||||
Claim | 60782110 | 7 hrs ago | IN | 0.00129961 AVAX | 0.00061261 | ||||
Claim | 60782100 | 7 hrs ago | IN | 0.03896847 AVAX | 0.00077589 | ||||
Compound | 60775547 | 9 hrs ago | IN | 0 AVAX | 0.00037166 | ||||
Claim | 60772674 | 11 hrs ago | IN | 0.00322219 AVAX | 0.00047581 | ||||
Compound | 60765894 | 13 hrs ago | IN | 0 AVAX | 0.00109314 | ||||
Compound | 60765753 | 13 hrs ago | IN | 0 AVAX | 0.00109314 | ||||
Compound | 60764122 | 14 hrs ago | IN | 0 AVAX | 0.00405506 | ||||
Claim | 60761145 | 15 hrs ago | IN | 0.00086981 AVAX | 0.00055098 | ||||
Claim | 60744004 | 21 hrs ago | IN | 0.00090427 AVAX | 0.00014224 | ||||
Claim | 60743892 | 21 hrs ago | IN | 0.00090427 AVAX | 0.00014232 | ||||
Claim | 60743866 | 21 hrs ago | IN | 0.00090427 AVAX | 0.00138121 | ||||
Increase Node Am... | 60727375 | 28 hrs ago | IN | 0 AVAX | 0.00190074 | ||||
Increase Node Am... | 60727306 | 28 hrs ago | IN | 0 AVAX | 0.00190231 | ||||
Claim | 60727079 | 28 hrs ago | IN | 0.01417648 AVAX | 0.00349719 | ||||
Compound | 60718191 | 31 hrs ago | IN | 0 AVAX | 0.00094683 | ||||
Increase Node Am... | 60716436 | 32 hrs ago | IN | 0 AVAX | 0.00019679 | ||||
Increase Node Am... | 60716391 | 32 hrs ago | IN | 0 AVAX | 0.00019396 | ||||
Compound | 60713176 | 33 hrs ago | IN | 0 AVAX | 0.00201746 | ||||
Claim | 60712466 | 34 hrs ago | IN | 0.01585277 AVAX | 0.00147451 | ||||
Claim | 60707471 | 36 hrs ago | IN | 0.00314828 AVAX | 0.00039897 | ||||
Claim | 60705449 | 37 hrs ago | IN | 0.02102791 AVAX | 0.0002138 | ||||
Compound | 60704598 | 37 hrs ago | IN | 0 AVAX | 0.00388088 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
60796176 | 2 hrs ago | 0.00005875 AVAX | ||||
60794805 | 2 hrs ago | 0.00345344 AVAX | ||||
60782110 | 7 hrs ago | 0.00129961 AVAX | ||||
60782100 | 7 hrs ago | 0.03896847 AVAX | ||||
60772674 | 11 hrs ago | 0.00322219 AVAX | ||||
60761145 | 15 hrs ago | 0.00086981 AVAX | ||||
60743866 | 21 hrs ago | 0.00090427 AVAX | ||||
60727079 | 28 hrs ago | 0.01417648 AVAX | ||||
60712466 | 34 hrs ago | 0.01585277 AVAX | ||||
60707471 | 36 hrs ago | 0.00314828 AVAX | ||||
60705449 | 37 hrs ago | 0.02102791 AVAX | ||||
60693961 | 42 hrs ago | 0.00329276 AVAX | ||||
60693935 | 42 hrs ago | 0.00434043 AVAX | ||||
60685017 | 45 hrs ago | 0.00370933 AVAX | ||||
60685006 | 45 hrs ago | 0.00374763 AVAX | ||||
60685003 | 45 hrs ago | 0.00376798 AVAX | ||||
60685001 | 45 hrs ago | 0.00378299 AVAX | ||||
60684998 | 45 hrs ago | 0.00379165 AVAX | ||||
60684993 | 45 hrs ago | 0.00380636 AVAX | ||||
60684990 | 45 hrs ago | 0.00382254 AVAX | ||||
60684986 | 45 hrs ago | 0.00383601 AVAX | ||||
60684982 | 45 hrs ago | 0.00385996 AVAX | ||||
60684979 | 45 hrs ago | 0.00390535 AVAX | ||||
60684975 | 45 hrs ago | 0.00391923 AVAX | ||||
60684968 | 45 hrs ago | 0.0040007 AVAX |
Loading...
Loading
Contract Name:
VaporNodesDiamond
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "clouds/contracts/interfaces/IDiamondCut.sol"; import "clouds/contracts/LDiamond.sol"; import "./libraries/AppStorage.sol"; error VaporNodesDiamond__InvalidFunction(); /// @title VaporNodesDiamond /// @author Modified from Nick Mudge: https://github.com/mudgen/diamond-3-hardhat /// @notice Main contract of the diamond /// @dev Utilizes 'IDiamondCut', 'LDiamond' and 'AppStorage' contract VaporNodesDiamond { /////////////////// /// APP STORAGE /// /////////////////// AppStorage s; ///////////// /// LOGIC /// ///////////// constructor(address _owner, address _diamondCutFacet) payable { LDiamond.updateContractOwner(_owner); IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](1); bytes4[] memory functionSelectors = new bytes4[](1); functionSelectors[0] = IDiamondCut.diamondCut.selector; cut[0] = IDiamondCut.FacetCut({ facetAddress: _diamondCutFacet, action: IDiamondCut.FacetCutAction.Add, functionSelectors: functionSelectors }); LDiamond.diamondCut(cut, address(0), ""); s.deployedAt = block.timestamp; } fallback() external payable { LDiamond.DiamondStorage storage ds; bytes32 position = LDiamond.DIAMOND_STORAGE_POSITION; assembly { ds.slot := position } address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress; if (facet == address(0)) revert VaporNodesDiamond__InvalidFunction(); assembly { calldatacopy(0, 0, calldatasize()) let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) returndatacopy(0, 0, returndatasize()) switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; //////////// /// NODE /// //////////// struct Node { string name; /// uint256 creation; uint256 lastClaimTime; /// uint256 amount; uint256 rewardPaid; /// bool active; } /////////////// /// ROYALTY /// /////////////// struct RoyaltyInfo { address recipient; uint256 bps; } //////////// /// MATH /// //////////// enum Rounding { Down, Up, Zero } /////////////////// /// APP STORAGE /// /////////////////// struct AppStorage { //////////////////// /// AUTHORIZABLE /// //////////////////// mapping(address => bool) authorized; //////////////// /// PAUSABLE /// //////////////// bool paused; /////////////// /// REWARDS /// /////////////// uint256 accumulatedRewardPerShare; uint256 ACCUMULATED_REWARD_PER_SHARE_PRECISION; uint256 lastRewardBalance; /////////////// /// GENERAL /// /////////////// address vpnd; address wavax; address stratosphere; address rewardsPool; address nodeStorage; address treasury; address referralController; /// uint256 deployedAt; uint256 tvl; uint256 balance; // TODO: Do we need this? Seems duplicated of 'lastRewardBalance' uint256 dailyReception; uint256 txCounter; mapping(uint256 => uint256) balances; mapping(uint256 => uint256) dailyReceptions; ///////////// /// NODES /// ///////////// uint256 minNodeAmount; uint256 maxNodesPerWallet; mapping(uint256 => Node) nodeByTokenId; ///////////////// /// MIGRATION /// ///////////////// uint256 totalNodesCreated; uint256 totalNodesMigrated; mapping(address => bool) alreadyMigrated; ///////////// /// TAXES /// ///////////// uint256 claimFee; uint256 compoundFee; uint256 depositFee; uint256 quoteSlippagePct; address dexRouter; ////////////// /// ERC721 /// ////////////// string baseURI; string name; string symbol; bool isTransferable; mapping(address => uint256) tokenBalances; mapping(uint256 => address) tokenOwners; mapping(uint256 => address) tokenApprovals; mapping(address => mapping(address => bool)) operatorApprovals; ///////////////////////// /// ERC721 ENUMERABLE /// ///////////////////////// mapping(address => mapping(uint256 => uint256)) ownedTokens; mapping(uint256 => uint256) ownedTokensIndex; uint256[] allTokens; mapping(uint256 => uint256) allTokensIndex; ///////////////// /// ROYALTIES /// ///////////////// address royaltyRecipient; uint16 royaltyBps; mapping(uint256 => RoyaltyInfo) royaltyInfoForToken; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "./interfaces/IDiamondCut.sol"; error IDiamondCut__AddressMustBeZero(); error IDiamondCut__FunctionAlreadyExists(); error IDiamondCut__ImmutableFunction(); error IDiamondCut__IncorrectAction(); error IDiamondCut__InexistentFacetCode(); error IDiamondCut__InexistentFunction(); error IDiamondCut__InvalidAddressZero(); error IDiamondCut__InvalidReplacementWithSameFunction(); error IDiamondCut__NoSelectors(); error LDiamond__InitializationFailed( address _initializationContractAddress, bytes _data ); error LDiamond__OnlyOwner(); /// @title LDiamond /// @author mektigboy /// @author Modified from Nick Mudge: https://github.com/mudgen/diamond-3-hardhat /// @notice Diamond library /// @dev EIP-2535 "Diamond" standard library LDiamond { ////////////// /// EVENTS /// ////////////// event DiamondCut(IDiamondCut.FacetCut[] _cut, address _init, bytes _data); event OwnershipTransferred( address indexed pastOwner, address indexed newOwner ); /////////////// /// STORAGE /// /////////////// bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); struct FacetAddressAndPosition { /// @notice Facet address address facetAddress; /// @notice Facet position in 'facetFunctionSelectors.functionSelectors' array uint96 functionSelectorPosition; } struct FacetFunctionSelectors { /// @notice Function selectors bytes4[] functionSelectors; /// @notice Position of 'facetAddress' in 'facetAddresses' array uint256 facetAddressPosition; } struct DiamondStorage { /// @notice Position of selector in 'facetFunctionSelectors.selectors' array mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition; /// @notice Facet addresses to function selectors mapping(address => FacetFunctionSelectors) facetFunctionSelectors; /// @notice Facet addresses address[] facetAddresses; /// @notice Query if contract implements an interface mapping(bytes4 => bool) supportedInterfaces; /// @notice Owner of contract address owner; } ///////////// /// LOGIC /// ///////////// /// @notice ... function diamondStorage() internal pure returns (DiamondStorage storage ds) { bytes32 position = DIAMOND_STORAGE_POSITION; assembly { ds.slot := position } } /// @notice ... /// @param _owner New owner function updateContractOwner(address _owner) internal { DiamondStorage storage ds = diamondStorage(); address oldOwner = ds.owner; ds.owner = _owner; emit OwnershipTransferred(oldOwner, _owner); } /// @notice ... function contractOwner() internal view returns (address owner_) { owner_ = diamondStorage().owner; } /// @notice ... function enforceIsOwner() internal view { if (diamondStorage().owner != msg.sender) revert LDiamond__OnlyOwner(); } /// @notice ... /// @param _cut ... /// @param _init ... /// @param _data ... function diamondCut( IDiamondCut.FacetCut[] memory _cut, address _init, bytes memory _data ) internal { for (uint256 facetIndex; facetIndex < _cut.length; ++facetIndex) { IDiamondCut.FacetCutAction action = _cut[facetIndex].action; if (action == IDiamondCut.FacetCutAction.Add) { addFunctions( _cut[facetIndex].facetAddress, _cut[facetIndex].functionSelectors ); } else if (action == IDiamondCut.FacetCutAction.Replace) { replaceFunctions( _cut[facetIndex].facetAddress, _cut[facetIndex].functionSelectors ); } else if (action == IDiamondCut.FacetCutAction.Remove) { removeFunctions( _cut[facetIndex].facetAddress, _cut[facetIndex].functionSelectors ); } else { revert IDiamondCut__IncorrectAction(); } } emit DiamondCut(_cut, _init, _data); initializeDiamondCut(_init, _data); } /// @notice ... /// @param _facet Facet address /// @param _selectors Facet selectors function addFunctions(address _facet, bytes4[] memory _selectors) internal { if (_selectors.length == 0) revert IDiamondCut__NoSelectors(); DiamondStorage storage ds = diamondStorage(); if (_facet == address(0)) revert IDiamondCut__InvalidAddressZero(); uint96 selectorPosition = uint96( ds.facetFunctionSelectors[_facet].functionSelectors.length ); /// @notice Add new facet address if it does not exists already if (selectorPosition == 0) { addFacet(ds, _facet); } for ( uint256 selectorIndex; selectorIndex < _selectors.length; ++selectorIndex ) { bytes4 selector = _selectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; if (oldFacetAddress != address(0)) revert IDiamondCut__FunctionAlreadyExists(); addFunction(ds, selector, selectorPosition, _facet); ++selectorPosition; } } /// @notice ... /// @param _facet Facet address /// @param _selectors Facet selectors function replaceFunctions(address _facet, bytes4[] memory _selectors) internal { if (_selectors.length == 0) revert IDiamondCut__NoSelectors(); DiamondStorage storage ds = diamondStorage(); if (_facet == address(0)) revert IDiamondCut__InvalidAddressZero(); uint96 selectorPosition = uint96( ds.facetFunctionSelectors[_facet].functionSelectors.length ); /// @notice Add new facet address if it does not exists already if (selectorPosition == 0) { addFacet(ds, _facet); } for ( uint256 selectorIndex; selectorIndex < _selectors.length; ++selectorIndex ) { bytes4 selector = _selectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; if (oldFacetAddress == _facet) revert IDiamondCut__InvalidReplacementWithSameFunction(); removeFunction(ds, oldFacetAddress, selector); addFunction(ds, selector, selectorPosition, _facet); ++selectorPosition; } } /// @notice ... /// @param _facet Facet address /// @param _selectors Facet selectors function removeFunctions(address _facet, bytes4[] memory _selectors) internal { if (_selectors.length == 0) revert IDiamondCut__NoSelectors(); DiamondStorage storage ds = diamondStorage(); if (_facet != address(0)) revert IDiamondCut__AddressMustBeZero(); for ( uint256 selectorIndex; selectorIndex < _selectors.length; ++selectorIndex ) { bytes4 selector = _selectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; removeFunction(ds, oldFacetAddress, selector); } } /// @notice ... /// @param ds DiamondStorage /// @param _facet Facet address function addFacet(DiamondStorage storage ds, address _facet) internal { enforceHasContractCode(_facet); ds.facetFunctionSelectors[_facet].facetAddressPosition = ds .facetAddresses .length; ds.facetAddresses.push(_facet); } /// @notice ... /// @param ds DiamondStorage /// @param _selector Facet selector /// @param _positon Selector position /// @param _facet Facet address function addFunction( DiamondStorage storage ds, bytes4 _selector, uint96 _positon, address _facet ) internal { ds .selectorToFacetAndPosition[_selector] .functionSelectorPosition = _positon; ds.facetFunctionSelectors[_facet].functionSelectors.push(_selector); ds.selectorToFacetAndPosition[_selector].facetAddress = _facet; } /// @notice ... /// @param ds DiamondStorage /// @param _facet Facet address /// @param _selector Facet address function removeFunction( DiamondStorage storage ds, address _facet, bytes4 _selector ) internal { if (_facet == address(0)) revert IDiamondCut__InexistentFunction(); /// @notice An immutable function is defined directly in diamond if (_facet == address(this)) revert IDiamondCut__ImmutableFunction(); /// @notice Replaces selector with last selector, then deletes last selector uint256 selectorPosition = ds .selectorToFacetAndPosition[_selector] .functionSelectorPosition; uint256 lastSelectorPosition = ds .facetFunctionSelectors[_facet] .functionSelectors .length - 1; /// @notice Replaces '_selector' with 'lastSelector' if not they are not the same if (selectorPosition != lastSelectorPosition) { bytes4 lastSelector = ds.facetFunctionSelectors[_facet].functionSelectors[ lastSelectorPosition ]; ds.facetFunctionSelectors[_facet].functionSelectors[ selectorPosition ] = lastSelector; ds .selectorToFacetAndPosition[lastSelector] .functionSelectorPosition = uint96(selectorPosition); } /// @notice Deletes last selector ds.facetFunctionSelectors[_facet].functionSelectors.pop(); delete ds.selectorToFacetAndPosition[_selector]; /// @notice Deletes facet address if there are no more selectors for facet address if (lastSelectorPosition == 0) { /// @notice Replaces facet address with last facet address, deletes last facet address uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1; uint256 facetAddressPosition = ds .facetFunctionSelectors[_facet] .facetAddressPosition; if (facetAddressPosition != lastFacetAddressPosition) { address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition]; ds.facetAddresses[facetAddressPosition] = lastFacetAddress; ds .facetFunctionSelectors[lastFacetAddress] .facetAddressPosition = facetAddressPosition; } ds.facetAddresses.pop(); delete ds.facetFunctionSelectors[_facet].facetAddressPosition; } } /// @notice ... /// @param _init ... /// @param _data ... function initializeDiamondCut(address _init, bytes memory _data) internal { if (_init == address(0)) { return; } enforceHasContractCode(_init); (bool success, bytes memory error) = _init.delegatecall(_data); if (!success) { if (error.length > 0) { /// @solidity memory-safe-assembly assembly { let dataSize := mload(error) revert(add(32, error), dataSize) } } else { revert LDiamond__InitializationFailed(_init, _data); } } } /// @notice ... /// @param _contract Contract address function enforceHasContractCode(address _contract) internal view { uint256 contractSize; assembly { contractSize := extcodesize(_contract) } if (contractSize == 0) revert IDiamondCut__InexistentFacetCode(); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; /// @title IDiamondCut /// @author mektigboy /// @author Modified from Nick Mudge: https://github.com/mudgen/diamond-3-hardhat /// @dev EIP-2535 "Diamond" standard interface IDiamondCut { ////////////// /// EVENTS /// ////////////// event DiamondCut(FacetCut[] _cut, address _init, bytes _data); /////////////// /// STORAGE /// /////////////// /// ACTIONS /// Add - 0 /// Replace - 1 /// Remove - 2 enum FacetCutAction { Add, Replace, Remove } struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } /// @param _cut Facet addreses and function selectors /// @param _init Address of contract or facet to execute _data /// @param _data Function call, includes function selector and arguments function diamondCut( FacetCut[] calldata _cut, address _init, bytes calldata _data ) external; }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_diamondCutFacet","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"IDiamondCut__AddressMustBeZero","type":"error"},{"inputs":[],"name":"IDiamondCut__FunctionAlreadyExists","type":"error"},{"inputs":[],"name":"IDiamondCut__ImmutableFunction","type":"error"},{"inputs":[],"name":"IDiamondCut__IncorrectAction","type":"error"},{"inputs":[],"name":"IDiamondCut__InexistentFacetCode","type":"error"},{"inputs":[],"name":"IDiamondCut__InexistentFunction","type":"error"},{"inputs":[],"name":"IDiamondCut__InvalidAddressZero","type":"error"},{"inputs":[],"name":"IDiamondCut__InvalidReplacementWithSameFunction","type":"error"},{"inputs":[],"name":"IDiamondCut__NoSelectors","type":"error"},{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"LDiamond__InitializationFailed","type":"error"},{"inputs":[],"name":"VaporNodesDiamond__InvalidFunction","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052604051620037b6380380620037b6833981810160405281019062000029919062001717565b6200003f826200020160201b6200015e1760201c565b6000600167ffffffffffffffff8111156200005f576200005e6200175e565b5b6040519080825280602002602001820160405280156200009c57816020015b6200008862001661565b8152602001906001900390816200007e5790505b5090506000600167ffffffffffffffff811115620000bf57620000be6200175e565b5b604051908082528060200260200182016040528015620000ee5781602001602082028036833780820191505090505b509050631f931c1c60e01b8160008151811062000110576200010f6200178d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001600060028111156200019a5762000199620017bc565b5b81526020018281525082600081518110620001ba57620001b96200178d565b5b6020026020010181905250620001ed82600060405180602001604052806000815250620002e060201b620002351760201c565b426000600c01819055505050505062001d33565b6000620002136200055760201b60201c565b905060008160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60005b8351811015620005025760008482815181106200030557620003046200178d565b5b6020026020010151602001519050600060028111156200032a5762000329620017bc565b5b81600281111562000340576200033f620017bc565b5b03620003a0576200039a85838151811062000360576200035f6200178d565b5b6020026020010151600001518684815181106200038257620003816200178d565b5b6020026020010151604001516200058460201b60201c565b620004ed565b60016002811115620003b757620003b6620017bc565b5b816002811115620003cd57620003cc620017bc565b5b036200042d5762000427858381518110620003ed57620003ec6200178d565b5b6020026020010151600001518684815181106200040f576200040e6200178d565b5b6020026020010151604001516200080160201b60201c565b620004ec565b600280811115620004435762000442620017bc565b5b816002811115620004595762000458620017bc565b5b03620004b957620004b38583815181106200047957620004786200178d565b5b6020026020010151600001518684815181106200049b576200049a6200178d565b5b60200260200101516040015162000a9060201b60201c565b620004eb565b6040517ff51092d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5080620004fa9062001824565b9050620002e3565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620005389392919062001b9e565b60405180910390a162000552828262000c2060201b60201c565b505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b6000815103620005c0576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620005d26200055760201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200063b576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff1603620006b157620006b0828562000d3a60201b60201c565b5b60005b8351811015620007fa576000848281518110620006d657620006d56200178d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620007c2576040517f98aaaded00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620007d68583868a62000e0460201b60201c565b83620007e29062001c01565b9350505080620007f29062001824565b9050620006b4565b5050505050565b60008151036200083d576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006200084f6200055760201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008b8576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036200092e576200092d828562000d3a60201b60201c565b5b60005b835181101562000a895760008482815181106200095357620009526200178d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000a3e576040517f25a7744900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000a5185828462000fb160201b60201c565b62000a658583868a62000e0460201b60201c565b8362000a719062001c01565b935050508062000a819062001824565b905062000931565b5050505050565b600081510362000acc576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062000ade6200055760201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000b47576040517f2d7466a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101562000c1a57600083828151811062000b6c5762000b6b6200178d565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000c0484828462000fb160201b60201c565b50508062000c129062001824565b905062000b4a565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16031562000d365762000c67826200161c60201b60201c565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405162000c91919062001c7c565b600060405180830381855af49150503d806000811462000cce576040519150601f19603f3d011682016040523d82523d6000602084013e62000cd3565b606091505b50915091508162000d335760008151111562000cf25780518082602001fd5b83836040517fffdd9bd500000000000000000000000000000000000000000000000000000000815260040162000d2a92919062001c95565b60405180910390fd5b50505b5050565b62000d4b816200161c60201b60201c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362001018576040517f716f7e6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200107e576040517f1c48b19a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905062001157919062001cc9565b9050808214620012f25760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110620011bc57620011bb6200178d565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106200123b576200123a6200178d565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548062001349576200134862001d04565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103620016155760006001866002018054905062001436919062001cc9565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146200157e576000876002018381548110620014a457620014a36200178d565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080886002018381548110620014eb57620014ea6200178d565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b8660020180548062001595576200159462001d04565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000813b9050600081036200165d576040517f72978b6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115620016a0576200169f620017bc565b5b8152602001606081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620016df82620016b2565b9050919050565b620016f181620016d2565b8114620016fd57600080fd5b50565b6000815190506200171181620016e6565b92915050565b60008060408385031215620017315762001730620016ad565b5b6000620017418582860162001700565b9250506020620017548582860162001700565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062001831826200181a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620018665762001865620017eb565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b620018a881620016d2565b82525050565b60038110620018c257620018c1620017bc565b5b50565b6000819050620018d582620018ae565b919050565b6000620018e782620018c5565b9050919050565b620018f981620018da565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62001962816200192b565b82525050565b600062001976838362001957565b60208301905092915050565b6000602082019050919050565b60006200199c82620018ff565b620019a881856200190a565b9350620019b5836200191b565b8060005b83811015620019ec578151620019d0888262001968565b9750620019dd8362001982565b925050600181019050620019b9565b5085935050505092915050565b600060608301600083015162001a1360008601826200189d565b50602083015162001a286020860182620018ee565b506040830151848203604086015262001a4282826200198f565b9150508091505092915050565b600062001a5d8383620019f9565b905092915050565b6000602082019050919050565b600062001a7f8262001871565b62001a8b81856200187c565b93508360208202850162001a9f856200188d565b8060005b8581101562001ae1578484038952815162001abf858262001a4f565b945062001acc8362001a65565b925060208a0199505060018101905062001aa3565b50829750879550505050505092915050565b62001afe81620016d2565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562001b4057808201518184015260208101905062001b23565b60008484015250505050565b6000601f19601f8301169050919050565b600062001b6a8262001b04565b62001b76818562001b0f565b935062001b8881856020860162001b20565b62001b938162001b4c565b840191505092915050565b6000606082019050818103600083015262001bba818662001a72565b905062001bcb602083018562001af3565b818103604083015262001bdf818462001b5d565b9050949350505050565b60006bffffffffffffffffffffffff82169050919050565b600062001c0e8262001be9565b91506bffffffffffffffffffffffff820362001c2f5762001c2e620017eb565b5b600182019050919050565b600081905092915050565b600062001c528262001b04565b62001c5e818562001c3a565b935062001c7081856020860162001b20565b80840191505092915050565b600062001c8a828462001c45565b915081905092915050565b600060408201905062001cac600083018562001af3565b818103602083015262001cc0818462001b5d565b90509392505050565b600062001cd6826200181a565b915062001ce3836200181a565b925082820390508181111562001cfe5762001cfd620017eb565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b611a738062001d436000396000f3fe60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610138576040517f2dda0b3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660008037600080366000845af43d6000803e8060008114610159573d6000f35b3d6000fd5b6000610168610459565b905060008160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60005b835181101561040e576000848281518110610256576102556114c3565b5b602002602001015160200151905060006002811115610278576102776114f2565b5b81600281111561028b5761028a6114f2565b5b036102db576102d68583815181106102a6576102a56114c3565b5b6020026020010151600001518684815181106102c5576102c46114c3565b5b602002602001015160400151610486565b6103fc565b600160028111156102ef576102ee6114f2565b5b816002811115610302576103016114f2565b5b036103525761034d85838151811061031d5761031c6114c3565b5b60200260200101516000015186848151811061033c5761033b6114c3565b5b6020026020010151604001516106de565b6103fb565b600280811115610365576103646114f2565b5b816002811115610378576103776114f2565b5b036103c8576103c3858381518110610393576103926114c3565b5b6020026020010151600001518684815181106103b2576103b16114c3565b5b602002602001015160400151610940565b6103fa565b6040517ff51092d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b50806104079061155a565b9050610238565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051610442939291906118c6565b60405180910390a16104548282610ab7565b505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b60008151036104c1576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104cb610459565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610533576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036105a05761059f8285610bc0565b5b60005b83518110156106d75760008482815181106105c1576105c06114c3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106ac576040517f98aaaded00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b88583868a610c82565b836106c290611923565b93505050806106d09061155a565b90506105a3565b5050505050565b6000815103610719576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610723610459565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361078b576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036107f8576107f78285610bc0565b5b60005b8351811015610939576000848281518110610819576108186114c3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610903576040517f25a7744900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090e858284610e2f565b61091a8583868a610c82565b8361092490611923565b93505050806109329061155a565b90506107fb565b5050505050565b600081510361097b576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610985610459565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109ed576040517f2d7466a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610ab1576000838281518110610a0e57610a0d6114c3565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610a9e848284610e2f565b505080610aaa9061155a565b90506109f0565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610bbc57610af58261147f565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b1d9190611993565b600060405180830381855af49150503d8060008114610b58576040519150601f19603f3d011682016040523d82523d6000602084013e610b5d565b606091505b509150915081610bb957600081511115610b7a5780518082602001fd5b83836040517fffdd9bd5000000000000000000000000000000000000000000000000000000008152600401610bb09291906119aa565b60405180910390fd5b50505b5050565b610bc98161147f565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e95576040517f716f7e6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610efa576040517f1c48b19a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050610fd191906119da565b90508082146111655760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611032576110316114c3565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106110ae576110ad6114c3565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806111b9576111b8611a0e565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103611478576000600186600201805490506112a391906119da565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146113e457600087600201838154811061130d5761130c6114c3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080886002018381548110611351576113506114c3565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b866002018054806113f8576113f7611a0e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000813b9050600081036114bf576040517f72978b6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600061156582611550565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361159757611596611521565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115f9826115ce565b9050919050565b611609816115ee565b82525050565b600381106116205761161f6114f2565b5b50565b60008190506116318261160f565b919050565b600061164182611623565b9050919050565b61165181611636565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6116b881611683565b82525050565b60006116ca83836116af565b60208301905092915050565b6000602082019050919050565b60006116ee82611657565b6116f88185611662565b935061170383611673565b8060005b8381101561173457815161171b88826116be565b9750611726836116d6565b925050600181019050611707565b5085935050505092915050565b60006060830160008301516117596000860182611600565b50602083015161176c6020860182611648565b506040830151848203604086015261178482826116e3565b9150508091505092915050565b600061179d8383611741565b905092915050565b6000602082019050919050565b60006117bd826115a2565b6117c781856115ad565b9350836020820285016117d9856115be565b8060005b8581101561181557848403895281516117f68582611791565b9450611801836117a5565b925060208a019950506001810190506117dd565b50829750879550505050505092915050565b611830816115ee565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611870578082015181840152602081019050611855565b60008484015250505050565b6000601f19601f8301169050919050565b600061189882611836565b6118a28185611841565b93506118b2818560208601611852565b6118bb8161187c565b840191505092915050565b600060608201905081810360008301526118e081866117b2565b90506118ef6020830185611827565b8181036040830152611901818461188d565b9050949350505050565b60006bffffffffffffffffffffffff82169050919050565b600061192e8261190b565b91506bffffffffffffffffffffffff820361194c5761194b611521565b5b600182019050919050565b600081905092915050565b600061196d82611836565b6119778185611957565b9350611987818560208601611852565b80840191505092915050565b600061199f8284611962565b915081905092915050565b60006040820190506119bf6000830185611827565b81810360208301526119d1818461188d565b90509392505050565b60006119e582611550565b91506119f083611550565b9250828203905081811115611a0857611a07611521565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220db1a19b64b86c62b8c36da2dcdfa8bf01f1f7b96632b6864cce87d9cfddf540464736f6c63430008110033000000000000000000000000c9d96ce8c56b346367c158209e9c92d0e4ab076c000000000000000000000000700e05ed7f2fc719ec81657126bd2d63e2551657
Deployed Bytecode
0x60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610138576040517f2dda0b3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660008037600080366000845af43d6000803e8060008114610159573d6000f35b3d6000fd5b6000610168610459565b905060008160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60005b835181101561040e576000848281518110610256576102556114c3565b5b602002602001015160200151905060006002811115610278576102776114f2565b5b81600281111561028b5761028a6114f2565b5b036102db576102d68583815181106102a6576102a56114c3565b5b6020026020010151600001518684815181106102c5576102c46114c3565b5b602002602001015160400151610486565b6103fc565b600160028111156102ef576102ee6114f2565b5b816002811115610302576103016114f2565b5b036103525761034d85838151811061031d5761031c6114c3565b5b60200260200101516000015186848151811061033c5761033b6114c3565b5b6020026020010151604001516106de565b6103fb565b600280811115610365576103646114f2565b5b816002811115610378576103776114f2565b5b036103c8576103c3858381518110610393576103926114c3565b5b6020026020010151600001518684815181106103b2576103b16114c3565b5b602002602001015160400151610940565b6103fa565b6040517ff51092d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b50806104079061155a565b9050610238565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051610442939291906118c6565b60405180910390a16104548282610ab7565b505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b60008151036104c1576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104cb610459565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610533576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036105a05761059f8285610bc0565b5b60005b83518110156106d75760008482815181106105c1576105c06114c3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106ac576040517f98aaaded00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b88583868a610c82565b836106c290611923565b93505050806106d09061155a565b90506105a3565b5050505050565b6000815103610719576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610723610459565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361078b576040517f25f4f61600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036107f8576107f78285610bc0565b5b60005b8351811015610939576000848281518110610819576108186114c3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610903576040517f25a7744900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090e858284610e2f565b61091a8583868a610c82565b8361092490611923565b93505050806109329061155a565b90506107fb565b5050505050565b600081510361097b576040517f7c21040900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610985610459565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146109ed576040517f2d7466a500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610ab1576000838281518110610a0e57610a0d6114c3565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610a9e848284610e2f565b505080610aaa9061155a565b90506109f0565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610bbc57610af58261147f565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b1d9190611993565b600060405180830381855af49150503d8060008114610b58576040519150601f19603f3d011682016040523d82523d6000602084013e610b5d565b606091505b509150915081610bb957600081511115610b7a5780518082602001fd5b83836040517fffdd9bd5000000000000000000000000000000000000000000000000000000008152600401610bb09291906119aa565b60405180910390fd5b50505b5050565b610bc98161147f565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e95576040517f716f7e6000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610efa576040517f1c48b19a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050610fd191906119da565b90508082146111655760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611032576110316114c3565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106110ae576110ad6114c3565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806111b9576111b8611a0e565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103611478576000600186600201805490506112a391906119da565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146113e457600087600201838154811061130d5761130c6114c3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080886002018381548110611351576113506114c3565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b866002018054806113f8576113f7611a0e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000813b9050600081036114bf576040517f72978b6100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600061156582611550565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361159757611596611521565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115f9826115ce565b9050919050565b611609816115ee565b82525050565b600381106116205761161f6114f2565b5b50565b60008190506116318261160f565b919050565b600061164182611623565b9050919050565b61165181611636565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6116b881611683565b82525050565b60006116ca83836116af565b60208301905092915050565b6000602082019050919050565b60006116ee82611657565b6116f88185611662565b935061170383611673565b8060005b8381101561173457815161171b88826116be565b9750611726836116d6565b925050600181019050611707565b5085935050505092915050565b60006060830160008301516117596000860182611600565b50602083015161176c6020860182611648565b506040830151848203604086015261178482826116e3565b9150508091505092915050565b600061179d8383611741565b905092915050565b6000602082019050919050565b60006117bd826115a2565b6117c781856115ad565b9350836020820285016117d9856115be565b8060005b8581101561181557848403895281516117f68582611791565b9450611801836117a5565b925060208a019950506001810190506117dd565b50829750879550505050505092915050565b611830816115ee565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611870578082015181840152602081019050611855565b60008484015250505050565b6000601f19601f8301169050919050565b600061189882611836565b6118a28185611841565b93506118b2818560208601611852565b6118bb8161187c565b840191505092915050565b600060608201905081810360008301526118e081866117b2565b90506118ef6020830185611827565b8181036040830152611901818461188d565b9050949350505050565b60006bffffffffffffffffffffffff82169050919050565b600061192e8261190b565b91506bffffffffffffffffffffffff820361194c5761194b611521565b5b600182019050919050565b600081905092915050565b600061196d82611836565b6119778185611957565b9350611987818560208601611852565b80840191505092915050565b600061199f8284611962565b915081905092915050565b60006040820190506119bf6000830185611827565b81810360208301526119d1818461188d565b90509392505050565b60006119e582611550565b91506119f083611550565b9250828203905081811115611a0857611a07611521565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220db1a19b64b86c62b8c36da2dcdfa8bf01f1f7b96632b6864cce87d9cfddf540464736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c9d96ce8c56b346367c158209e9c92d0e4ab076c000000000000000000000000700e05ed7f2fc719ec81657126bd2d63e2551657
-----Decoded View---------------
Arg [0] : _owner (address): 0xC9D96ce8C56b346367c158209e9c92d0E4ab076C
Arg [1] : _diamondCutFacet (address): 0x700E05ED7f2Fc719ec81657126bd2D63e2551657
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c9d96ce8c56b346367c158209e9c92d0e4ab076c
Arg [1] : 000000000000000000000000700e05ed7f2fc719ec81657126bd2d63e2551657
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | 54.38% | $607.9 | 0.5277 | $320.77 | |
AVAX | 29.09% | $22.33 | 7.6833 | $171.55 | |
ETH | 12.30% | $1,792.54 | 0.0405 | $72.53 | |
ARB | 3.97% | $1,792.03 | 0.0131 | $23.43 | |
BASE | 0.25% | $1,791.46 | 0.00081067 | $1.45 | |
POL | 0.01% | $0.222536 | 0.3557 | $0.079162 | |
CRONOS | <0.01% | $0.090588 | 0.0379 | $0.003435 | |
MANTLE | <0.01% | $0.704937 | 0.00426869 | $0.003009 | |
GLMR | <0.01% | $0.077814 | 0.00653056 | $0.000508 |
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.