Contract Overview
Balance:
0 MATIC
Token:
My Name Tag:
Not Available
[ Download CSV Export ]
Latest 4 internal transactions
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x6bdcd9b235277f939b568072f991c5edefc0bdbe541044ea7bac8f3794e2b744 | 29471865 | 177 days 16 hrs ago | 0x8361445b480822f129ba6196a7673a1d32fd2067 | 0xa2f2ed226d4569c8ec09c175ddeef4d41bab4627 | 0.01 MATIC | ||
0x5c4fef97ab61e0d20c60f8e874de4c17b47099c3d5bbf38fe6f200581c7b70a2 | 29455964 | 178 days 14 hrs ago | 0xa2f2ed226d4569c8ec09c175ddeef4d41bab4627 | Contract Creation | 0 MATIC | ||
0x795f7539e80671ec19fc90a3f3f9a41da028b24014cc2a261691efe5f30bf65e | 29455276 | 178 days 15 hrs ago | 0xa2f2ed226d4569c8ec09c175ddeef4d41bab4627 | Contract Creation | 0 MATIC | ||
0x3c5dbd8902a530cbc94406ffdb40ed62df83beefd89645b34775ad5de30052bb | 29393005 | 182 days 5 hrs ago | 0xa2f2ed226d4569c8ec09c175ddeef4d41bab4627 | Contract Creation | 0 MATIC |
[ Download CSV Export ]
Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x173d82FF0294d4bb83A3AAF30Be958Cbc6D809f7
Contract Name:
ConnextDiamond
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 * * Implementation of a diamond. /******************************************************************************/ import {LibDiamond} from "../libraries/LibDiamond.sol"; import {IDiamondCut} from "../interfaces/IDiamondCut.sol"; contract ConnextDiamond { struct Initialization { address initContract; bytes initData; } /// @notice This construct a diamond contract /// @param _contractOwner the owner of the contract. With default DiamondCutFacet, this is the sole address allowed to make further cuts. /// @param _diamondCut the list of facet to add /// @param _initializations the list of initialization pair to execute. This allow to setup a contract with multiple level of independent initialization. constructor( address _contractOwner, IDiamondCut.FacetCut[] memory _diamondCut, Initialization[] memory _initializations ) payable { if (_contractOwner != address(0)) { LibDiamond.setContractOwner(_contractOwner); } LibDiamond.diamondCut(_diamondCut, address(0), ""); uint256 len = _initializations.length; for (uint256 i = 0; i < len; ) { LibDiamond.initializeDiamondCut(_initializations[i].initContract, _initializations[i].initData); unchecked { ++i; } } } // Find facet for function that is called and execute the // function if a facet is found and return any value. fallback() external payable { LibDiamond.DiamondStorage storage ds; bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION; // get diamond storage assembly { ds.slot := position } // get facet from function selector address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress; require(facet != address(0), "Diamond: Function does not exist"); // Execute external function from facet using delegatecall and return any value. assembly { // copy function selector and any arguments calldatacopy(0, 0, calldatasize()) // execute function call using the facet let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) // get any return value returndatacopy(0, 0, returndatasize()) // return any return value or error back to the caller switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ interface IDiamondCut { enum FacetCutAction { Add, Replace, Remove } // Add=0, Replace=1, Remove=2 struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } /// @notice Propose to 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 proposeDiamondCut( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external; event DiamondCutProposed(FacetCut[] _diamondCut, address _init, bytes _calldata, uint256 deadline); /// @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); /// @notice Propose to 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 rescindDiamondCut( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external; /** * @notice Returns the acceptance time for a given proposal * @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 getAcceptanceTime( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external returns (uint256); event DiamondCutRescinded(FacetCut[] _diamondCut, address _init, bytes _calldata); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.17; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ import {IDiamondCut} from "../interfaces/IDiamondCut.sol"; // Remember to add the loupe functions from DiamondLoupeFacet to the diamond. // The loupe functions are required by the EIP2535 Diamonds standard library LibDiamond { bytes32 constant DIAMOND_STORAGE_POSITION = bytes32(uint256(keccak256("diamond.standard.diamond.storage")) - 1); struct FacetAddressAndPosition { address facetAddress; uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array } struct FacetFunctionSelectors { bytes4[] functionSelectors; uint256 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; // hash of proposed facets => acceptance time mapping(bytes32 => uint256) acceptanceTimes; // acceptance delay for upgrading facets uint256 acceptanceDelay; } 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(); emit OwnershipTransferred(ds.contractOwner, _newOwner); ds.contractOwner = _newOwner; } function contractOwner() internal view returns (address contractOwner_) { contractOwner_ = diamondStorage().contractOwner; } function acceptanceDelay() internal view returns (uint256) { return diamondStorage().acceptanceDelay; } function acceptanceTime(bytes32 _key) internal view returns (uint256) { return diamondStorage().acceptanceTimes[_key]; } function enforceIsContractOwner() internal view { require(msg.sender == diamondStorage().contractOwner, "LibDiamond: !contract owner"); } event DiamondCutProposed(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata, uint256 deadline); function proposeDiamondCut( IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata ) internal { // NOTE: to save gas, verification that `proposeDiamondCut` and `diamondCut` are not // included is performed in `diamondCut`, where there is already a loop over facets. // In the case where these cuts are performed, admins must call `rescindDiamondCut` DiamondStorage storage ds = diamondStorage(); uint256 acceptance = block.timestamp + ds.acceptanceDelay; ds.acceptanceTimes[keccak256(abi.encode(_diamondCut, _init, _calldata))] = acceptance; emit DiamondCutProposed(_diamondCut, _init, _calldata, acceptance); } event DiamondCutRescinded(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata); function rescindDiamondCut( IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata ) internal { // NOTE: you can always rescind a proposed facet cut as the owner, even if outside of the validity // period or befor the delay elpases delete diamondStorage().acceptanceTimes[keccak256(abi.encode(_diamondCut, _init, _calldata))]; emit DiamondCutRescinded(_diamondCut, _init, _calldata); } event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata); // Internal function version of diamondCut function diamondCut( IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata ) internal { DiamondStorage storage ds = diamondStorage(); bytes32 key = keccak256(abi.encode(_diamondCut, _init, _calldata)); if (ds.facetAddresses.length != 0) { uint256 time = ds.acceptanceTimes[key]; require(time != 0 && time <= block.timestamp, "LibDiamond: delay not elapsed"); // Reset the acceptance time to ensure the same set of updates cannot be replayed // without going through a proposal window // NOTE: the only time this will not be set to 0 is when there are no // existing facet addresses (on initialization, or when starting after a bad upgrade, // for example). // The only relevant case is the initial case, which has no acceptance time. otherwise, // there is no way to update the facet selector mapping to call `diamondCut`. // Avoiding setting the empty value will save gas on the initial deployment. delete ds.acceptanceTimes[key]; } // Otherwise, this is the first instance of deployment and it can be set automatically uint256 len = _diamondCut.length; for (uint256 facetIndex; facetIndex < len; ) { 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"); } unchecked { ++facetIndex; } } 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(); require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)"); uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length); // add new facet address if it does not exist if (selectorPosition == 0) { addFacet(ds, _facetAddress); } uint256 len = _functionSelectors.length; for (uint256 selectorIndex; selectorIndex < len; ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress; require(oldFacetAddress == address(0), "LibDiamondCut: Can't add function that already exists"); addFunction(ds, selector, selectorPosition, _facetAddress); selectorPosition++; unchecked { ++selectorIndex; } } } function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { uint256 len = _functionSelectors.length; require(len != 0, "LibDiamondCut: No selectors in facet to cut"); DiamondStorage storage ds = diamondStorage(); require(_facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)"); uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length); // add new facet address if it does not exist if (selectorPosition == 0) { addFacet(ds, _facetAddress); } for (uint256 selectorIndex; selectorIndex < len; ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress; require(oldFacetAddress != _facetAddress, "LibDiamondCut: Can't replace function with same function"); removeFunction(ds, oldFacetAddress, selector); addFunction(ds, selector, selectorPosition, _facetAddress); selectorPosition++; unchecked { ++selectorIndex; } } } function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal { require(_functionSelectors.length != 0, "LibDiamondCut: No selectors in facet to cut"); DiamondStorage storage ds = diamondStorage(); // get the propose and cut selectors -- can never remove these bytes4 proposeSelector = IDiamondCut.proposeDiamondCut.selector; bytes4 cutSelector = IDiamondCut.diamondCut.selector; // if function does not exist then do nothing and return require(_facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)"); uint256 len = _functionSelectors.length; for (uint256 selectorIndex; selectorIndex < len; ) { bytes4 selector = _functionSelectors[selectorIndex]; require(selector != proposeSelector && selector != cutSelector, "LibDiamondCut: Cannot remove cut selectors"); address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress; removeFunction(ds, oldFacetAddress, selector); unchecked { ++selectorIndex; } } } function addFacet(DiamondStorage storage ds, address _facetAddress) internal { enforceHasContractCode(_facetAddress, "LibDiamondCut: New facet has no code"); ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length; ds.facetAddresses.push(_facetAddress); } function addFunction( DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress ) internal { ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition; ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector); ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress; } function removeFunction( DiamondStorage storage ds, address _facetAddress, bytes4 _selector ) internal { 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 = uint96(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 = facetAddressPosition; } ds.facetAddresses.pop(); delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition; } } function initializeDiamondCut(address _init, bytes memory _calldata) internal { if (_init == address(0)) { require(_calldata.length == 0, "LibDiamondCut: _init is address(0) but_calldata is not empty"); } else { require(_calldata.length != 0, "LibDiamondCut: _calldata is empty but _init is not address(0)"); if (_init != address(this)) { enforceHasContractCode(_init, "LibDiamondCut: _init address has no code"); } (bool success, bytes memory error) = _init.delegatecall(_calldata); if (!success) { if (error.length != 0) { // bubble up the error revert(string(error)); } else { revert("LibDiamondCut: _init function reverted"); } } } } function enforceHasContractCode(address _contract, string memory _errorMessage) internal view { require(_contract.code.length != 0, _errorMessage); } }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"initContract","type":"address"},{"internalType":"bytes","name":"initData","type":"bytes"}],"internalType":"struct ConnextDiamond.Initialization[]","name":"_initializations","type":"tuple[]"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260405162002c4f38038062002c4f8339810160408190526200002691620014a4565b6001600160a01b038316156200004c576200004c83620000ed60201b620000d81760201c565b62000074826000604051806020016040528060008152506200015c60201b620001451760201c565b805160005b81811015620000e257620000d98382815181106200009b576200009b62001678565b602002602001015160000151848381518110620000bc57620000bc62001678565b6020026020010151602001516200047e60201b620004171760201c565b60010162000079565b505050505062001886565b6000620000f9620006a3565b60048101546040519192506001600160a01b03808516929116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360040180546001600160a01b0319166001600160a01b0392909216919091179055565b600062000168620006a3565b905060008484846040516020016200018393929190620016d2565b60408051601f1981840301815291905280516020909101206002830154909150156200022f5760008181526005830160205260409020548015801590620001ca5750428111155b6200021c5760405162461bcd60e51b815260206004820152601d60248201527f4c69624469616d6f6e643a2064656c6179206e6f7420656c617073656400000060448201526064015b60405180910390fd5b5060008181526005830160205260408120555b845160005b818110156200042c57600087828151811062000254576200025462001678565b6020026020010151602001519050600060028111156200027857620002786200168e565b8160028111156200028d576200028d6200168e565b03620002eb57620002e5888381518110620002ac57620002ac62001678565b602002602001015160000151898481518110620002cd57620002cd62001678565b602002602001015160400151620006d960201b60201c565b62000422565b60018160028111156200030257620003026200168e565b036200035a57620002e588838151811062000321576200032162001678565b60200260200101516000015189848151811062000342576200034262001678565b6020026020010151604001516200095460201b60201c565b60028160028111156200037157620003716200168e565b03620003c957620002e588838151811062000390576200039062001678565b602002602001015160000151898481518110620003b157620003b162001678565b60200260200101516040015162000be160201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840162000213565b5060010162000234565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738686866040516200046293929190620016d2565b60405180910390a16200047685856200047e565b505050505050565b6001600160a01b0382166200050857805115620005045760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840162000213565b5050565b8051600003620005815760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840162000213565b6001600160a01b0382163014620005b757620005b78260405180606001604052806028815260200162002bc36028913962000dda565b600080836001600160a01b031683604051620005d49190620017d9565b600060405180830381855af49150503d806000811462000611576040519150601f19603f3d011682016040523d82523d6000602084013e62000616565b606091505b5091509150816200069d5780511562000645578060405162461bcd60e51b8152600401620002139190620017f7565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840162000213565b50505050565b600080620006d360017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c62001829565b92915050565b80516000036200072f5760405162461bcd60e51b815260206004820152602b602482015260008051602062002c2f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b606482015260840162000213565b60006200073b620006a3565b90506001600160a01b038316620007995760405162461bcd60e51b815260206004820152602c602482015260008051602062002beb83398151915260448201526b65206164647265737328302960a01b606482015260840162000213565b6001600160a01b0383166000908152600182016020526040812054906001600160601b0382169003620007d257620007d2828562000e0b565b825160005b8181101562000476576000858281518110620007f757620007f762001678565b6020908102919091018101516001600160e01b031981166000908152918790526040909120549091506001600160a01b031680156200089f5760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c7265616479206578697374730000000000000000000000606482015260840162000213565b6001600160e01b0319821660008181526020888152604080832080546001600160a01b03908116600160a01b6001600160601b038d16021782558d168085526001808d0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925288905281546001600160a01b0319161790558462000943816200183f565b9550508260010192505050620007d7565b80516000819003620009ac5760405162461bcd60e51b815260206004820152602b602482015260008051602062002c2f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b606482015260840162000213565b6000620009b8620006a3565b90506001600160a01b03841662000a165760405162461bcd60e51b815260206004820152602c602482015260008051602062002beb83398151915260448201526b65206164647265737328302960a01b606482015260840162000213565b6001600160a01b0384166000908152600182016020526040812054906001600160601b038216900362000a4f5762000a4f828662000e0b565b60005b838110156200047657600085828151811062000a725762000a7262001678565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03908116908816810362000b1f5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840162000213565b62000b2c85828462000e78565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558d168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558362000bd0816200183f565b945050826001019250505062000a52565b805160000362000c375760405162461bcd60e51b815260206004820152602b602482015260008051602062002c2f83398151915260448201526a1858d95d081d1bc818dd5d60aa1b606482015260840162000213565b600062000c43620006a3565b9050635df91ac760e11b6307e4c70760e21b6001600160a01b0385161562000cd45760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d757374206265206164647265737328302900000000000000000000606482015260840162000213565b835160005b8181101562000dd157600086828151811062000cf95762000cf962001678565b60200260200101519050846001600160e01b031916816001600160e01b0319161415801562000d3557506001600160e01b031981811690851614155b62000d965760405162461bcd60e51b815260206004820152602a60248201527f4c69624469616d6f6e644375743a2043616e6e6f742072656d6f7665206375746044820152692073656c6563746f727360b01b606482015260840162000213565b6001600160e01b031981166000908152602087905260409020546001600160a01b031662000dc687828462000e78565b505060010162000cd9565b50505050505050565b806001600160a01b0383163b62000e065760405162461bcd60e51b8152600401620002139190620017f7565b505050565b62000e308160405180606001604052806024815260200162002c0b6024913962000dda565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b03821662000ef65760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840162000213565b306001600160a01b0383160362000f675760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b606482015260840162000213565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b0316929162000fb89162001829565b9050808214620010b1576001600160a01b0384166000908152600186016020526040812080548390811062000ff15762000ff162001678565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062001045576200104562001678565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b03841660009081526001860160205260409020805480620010dd57620010dd62001870565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319851682528690526040812081905581900362001252576002850154600090620011439060019062001829565b6001600160a01b0386166000908152600180890160205260409091200154909150808214620011f957600087600201838154811062001186576200118662001678565b6000918252602090912001546002890180546001600160a01b039092169250829184908110620011ba57620011ba62001678565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b866002018054806200120f576200120f62001870565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505b5050505050565b80516001600160a01b03811681146200127157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620012b157620012b162001276565b60405290565b604051606081016001600160401b0381118282101715620012b157620012b162001276565b604051601f8201601f191681016001600160401b038111828210171562001307576200130762001276565b604052919050565b60006001600160401b038211156200132b576200132b62001276565b5060051b60200190565b60005b838110156200135257818101518382015260200162001338565b50506000910152565b6000601f83818401126200136e57600080fd5b825160206200138762001381836200130f565b620012dc565b82815260059290921b85018101918181019087841115620013a757600080fd5b8287015b84811015620014985780516001600160401b0380821115620013cd5760008081fd5b908901906040601f19838d038101821315620013e95760008081fd5b620013f36200128c565b6200140089860162001259565b81528285015184811115620014155760008081fd5b8086019550508d603f8601126200142c5760008081fd5b888501518481111562001443576200144362001276565b620014548a848e84011601620012dc565b94508085528e848288010111156200146e57600092508283fd5b6200147f818b870186890162001335565b50808901939093525050845250918301918301620013ab565b50979650505050505050565b600080600060608486031215620014ba57600080fd5b620014c58462001259565b60208501519093506001600160401b0380821115620014e357600080fd5b818601915086601f830112620014f857600080fd5b81516200150962001381826200130f565b8082825260208201915060208360051b8601019250898311156200152c57600080fd5b602085015b8381101562001644578051858111156200154a57600080fd5b86016060818d03601f190112156200156157600080fd5b6200156b620012b7565b620015796020830162001259565b81526040820151600381106200158e57600080fd5b6020820152606082015187811115620015a657600080fd5b8083019250508c603f830112620015bc57600080fd5b6020820151620015d062001381826200130f565b81815260059190911b83016040019060208101908f831115620015f257600080fd5b6040850194505b828510156200162d5784516001600160e01b0319811681146200161b57600080fd5b825260209485019490910190620015f9565b604084015250508452506020928301920162001531565b50604089015190965093505050808211156200165f57600080fd5b506200166e868287016200135b565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452620016be81602086016020860162001335565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015620017a757898403607f19018652815180516001600160a01b031685528381015189860190600381106200174357634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620017915783516001600160e01b031916825292860192600192909201919086019062001765565b50978501979550505090820190600101620016fb565b50506001600160a01b038a16908801528681036040880152620017cb8189620016a4565b9a9950505050505050505050565b60008251620017ed81846020870162001335565b9190910192915050565b6020815260006200180c6020830184620016a4565b9392505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115620006d357620006d362001813565b60006001600160601b038281166002600160601b0319810162001866576200186662001813565b6001019392505050565b634e487b7160e01b600052603160045260246000fd5b61132d80620018966000396000f3fe60806040523661000b57005b60008061003960017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c611013565b600080356001600160e01b0319168152602082905260409020549092508291506001600160a01b0316806100b45760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100d3573d6000f35b3d6000fd5b60006100e261062a565b60048101546040519192506001600160a01b03808516929116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360040180546001600160a01b0319166001600160a01b0392909216919091179055565b600061014f61062a565b905060008484846040516020016101689392919061108c565b60408051601f19818403018152919052805160209091012060028301549091501561020c57600081815260058301602052604090205480158015906101ad5750428111155b6101f95760405162461bcd60e51b815260206004820152601d60248201527f4c69624469616d6f6e643a2064656c6179206e6f7420656c617073656400000060448201526064016100ab565b5060008181526005830160205260408120555b845160005b818110156103c957600087828151811061022d5761022d61118c565b60200260200101516020015190506000600281111561024e5761024e611026565b81600281111561026057610260611026565b036102ae576102a988838151811061027a5761027a61118c565b6020026020010151600001518984815181106102985761029861118c565b60200260200101516040015161065e565b6103c0565b60018160028111156102c2576102c2611026565b0361030b576102a98883815181106102dc576102dc61118c565b6020026020010151600001518984815181106102fa576102fa61118c565b6020026020010151604001516107cc565b600281600281111561031f5761031f611026565b03610368576102a98883815181106103395761033961118c565b6020026020010151600001518984815181106103575761035761118c565b602002602001015160400151610952565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084016100ab565b50600101610211565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738686866040516103fd9392919061108c565b60405180910390a161040f8585610417565b505050505050565b6001600160a01b03821661049e5780511561049a5760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d7074790000000060648201526084016100ab565b5050565b80516000036105155760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f74206164647265737328302900000060648201526084016100ab565b6001600160a01b038216301461054757610547826040518060600160405280602881526020016112ac60289139610b01565b600080836001600160a01b03168360405161056291906111a2565b600060405180830381855af49150503d806000811461059d576040519150601f19603f3d011682016040523d82523d6000602084013e6105a2565b606091505b509150915081610624578051156105cd578060405162461bcd60e51b81526004016100ab91906111be565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b60648201526084016100ab565b50505050565b60008061065860017fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c611013565b92915050565b805160000361067f5760405162461bcd60e51b81526004016100ab906111d8565b600061068961062a565b90506001600160a01b0383166106b15760405162461bcd60e51b81526004016100ab90611223565b6001600160a01b0383166000908152600182016020526040812054906001600160601b03821690036106e7576106e78285610b2f565b825160005b8181101561040f5760008582815181106107085761070861118c565b6020908102919091018101516001600160e01b031981166000908152918790526040909120549091506001600160a01b031680156107a65760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b60648201526084016100ab565b6107b28683878b610b99565b846107bc8161126f565b95505082600101925050506106ec565b805160008190036107ef5760405162461bcd60e51b81526004016100ab906111d8565b60006107f961062a565b90506001600160a01b0384166108215760405162461bcd60e51b81526004016100ab90611223565b6001600160a01b0384166000908152600182016020526040812054906001600160601b0382169003610857576108578286610b2f565b60005b8381101561040f5760008582815181106108765761087661118c565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690881681036109215760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e000000000000000060648201526084016100ab565b61092c858284610c39565b6109388583868b610b99565b836109428161126f565b945050826001019250505061085a565b80516000036109735760405162461bcd60e51b81526004016100ab906111d8565b600061097d61062a565b9050635df91ac760e11b6307e4c70760e21b6001600160a01b03851615610a055760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b60648201526084016100ab565b835160005b81811015610af8576000868281518110610a2657610a2661118c565b60200260200101519050846001600160e01b031916816001600160e01b03191614158015610a6157506001600160e01b031981811690851614155b610ac05760405162461bcd60e51b815260206004820152602a60248201527f4c69624469616d6f6e644375743a2043616e6e6f742072656d6f7665206375746044820152692073656c6563746f727360b01b60648201526084016100ab565b6001600160e01b031981166000908152602087905260409020546001600160a01b0316610aee878284610c39565b5050600101610a0a565b50505050505050565b806001600160a01b0383163b610b2a5760405162461bcd60e51b81526004016100ab91906111be565b505050565b610b51816040518060600160405280602481526020016112d460249139610b01565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160e01b0319831660008181526020868152604080832080546001600160601b03909716600160a01b026001600160a01b0397881617815594909516808352600180890183529583208054968701815583528183206008870401805460e09890981c60046007909816979097026101000a96870263ffffffff9097021990971695909517909555529290915281546001600160a01b031916179055565b6001600160a01b038216610cb55760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e277420657869737400000000000000000060648201526084016100ab565b306001600160a01b03831603610d245760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b60648201526084016100ab565b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b03169291610d7391611013565b9050808214610e65576001600160a01b03841660009081526001860160205260408120805483908110610da857610da861118c565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610df957610df961118c565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b03841660009081526001860160205260409020805480610e8e57610e8e611295565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b03198516825286905260408120819055819003610ff6576002850154600090610ef190600190611013565b6001600160a01b0386166000908152600180890160205260409091200154909150808214610fa0576000876002018381548110610f3057610f3061118c565b6000918252602090912001546002890180546001600160a01b039092169250829184908110610f6157610f6161118c565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b86600201805480610fb357610fb3611295565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505b5050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561065857610658610ffd565b634e487b7160e01b600052602160045260246000fd5b60005b8381101561105757818101518382015260200161103f565b50506000910152565b6000815180845261107881602086016020860161103c565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101561115c57898403607f19018652815180516001600160a01b031685528381015189860190600381106110fb57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156111475783516001600160e01b031916825292860192600192909201919086019061111d565b509785019795505050908201906001016110b5565b50506001600160a01b038a1690880152868103604088015261117e8189611060565b9a9950505050505050505050565b634e487b7160e01b600052603260045260246000fd5b600082516111b481846020870161103c565b9190910192915050565b6020815260006111d16020830184611060565b9392505050565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b60006001600160601b0380831681810361128b5761128b610ffd565b6001019392505050565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212203cfd0fd1e1a3d5605e46220343db27c14be7e9854e999acbca43a439f00b89f064736f6c634300081100334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206600000000000000000000000054baa998771639628ffc0206c3b916c466b79c8900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000001760000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000aa00000000000000000000000000000000000000000000000000000000000000bc00000000000000000000000000000000000000000000000000000000000000f4000000000000000000000000000000000000000000000000000000000000012400000000000000000000000000000000000000000000000000000000000001420000000000000000000000000000000000000000000000000000000000000152000000000000000000000000000000000000000000000000000000000000015c000000000000000000000000068ae023c4b6d26b6a2b23d442f89389f836ea0f60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000131506e46300000000000000000000000000000000000000000000000000000000600620910000000000000000000000000000000000000000000000000000000080dc2248000000000000000000000000000000000000000000000000000000009b5985190000000000000000000000000000000000000000000000000000000057bd0a3200000000000000000000000000000000000000000000000000000000ae8bc0de000000000000000000000000000000000000000000000000000000002c1999d000000000000000000000000000000000000000000000000000000000bd8671a7000000000000000000000000000000000000000000000000000000001ecf6f9f00000000000000000000000000000000000000000000000000000000ad4c77710000000000000000000000000000000000000000000000000000000007a38d7b00000000000000000000000000000000000000000000000000000000f1537686000000000000000000000000000000000000000000000000000000005a2164e500000000000000000000000000000000000000000000000000000000a1b193010000000000000000000000000000000000000000000000000000000003e418c200000000000000000000000000000000000000000000000000000000b64a5e0700000000000000000000000000000000000000000000000000000000e1cb395800000000000000000000000000000000000000000000000000000000c405842900000000000000000000000000000000000000000000000000000000e9d7bcec00000000000000000000000000000000000000000000000000000000000000000000000000000000a5a52a4bf2d369dff45b39b27ad1f3a9d79f1e4c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000118a33623100000000000000000000000000000000000000000000000000000000159e041f000000000000000000000000000000000000000000000000000000002424401f00000000000000000000000000000000000000000000000000000000c2fb26a600000000000000000000000000000000000000000000000000000000b49c53a70000000000000000000000000000000000000000000000000000000063e3e7d200000000000000000000000000000000000000000000000000000000cb8058ba000000000000000000000000000000000000000000000000000000005412671100000000000000000000000000000000000000000000000000000000affed0e000000000000000000000000000000000000000000000000000000000121cca31000000000000000000000000000000000000000000000000000000006989ca7c000000000000000000000000000000000000000000000000000000001a8bc0e10000000000000000000000000000000000000000000000000000000041bdc8b500000000000000000000000000000000000000000000000000000000bfd79030000000000000000000000000000000000000000000000000000000003339df96000000000000000000000000000000000000000000000000000000008aac16ba0000000000000000000000000000000000000000000000000000000091f5de790000000000000000000000000000000000000000000000000000000000000000000000000000000067dd809acc3b5e854385170578e978f2a379e6ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001ab2dc3f500000000000000000000000000000000000000000000000000000000000000000000000000000000bf5f882e23221db0288cf52e9550fe75a20b1ad6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000015c5b350df00000000000000000000000000000000000000000000000000000000e7ef6c6b00000000000000000000000000000000000000000000000000000000c24250c900000000000000000000000000000000000000000000000000000000bb271a27000000000000000000000000000000000000000000000000000000002ec0c00200000000000000000000000000000000000000000000000000000000a9943b1b000000000000000000000000000000000000000000000000000000006a42b8f8000000000000000000000000000000000000000000000000000000008da5cb5b000000000000000000000000000000000000000000000000000000008456cb5900000000000000000000000000000000000000000000000000000000b49c204700000000000000000000000000000000000000000000000000000000b1f8100d00000000000000000000000000000000000000000000000000000000c56ce35800000000000000000000000000000000000000000000000000000000d1851c92000000000000000000000000000000000000000000000000000000003cf52ffb00000000000000000000000000000000000000000000000000000000c91cb56a000000000000000000000000000000000000000000000000000000002547fdb30000000000000000000000000000000000000000000000000000000023986f7d0000000000000000000000000000000000000000000000000000000080e52e3f000000000000000000000000000000000000000000000000000000006be557850000000000000000000000000000000000000000000000000000000012232937000000000000000000000000000000000000000000000000000000003f4ba83a00000000000000000000000000000000000000000000000000000000000000000000000000000000a04e49412b3d80572af9ef1c1ce9acff52dbe123000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005dd39f00d000000000000000000000000000000000000000000000000000000008cba8b6a0000000000000000000000000000000000000000000000000000000065bc85820000000000000000000000000000000000000000000000000000000060f0a5ac00000000000000000000000000000000000000000000000000000000f01b3e01000000000000000000000000000000000000000000000000000000000000000000000000000000000d5be4aaf2378ca73f4d90efe50bb2f53287cd350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000184b72c5da000000000000000000000000000000000000000000000000000000000951d6d80000000000000000000000000000000000000000000000000000000009935b8f0000000000000000000000000000000000000000000000000000000054064594000000000000000000000000000000000000000000000000000000002d3f9ef600000000000000000000000000000000000000000000000000000000f259cd2700000000000000000000000000000000000000000000000000000000da3a892f000000000000000000000000000000000000000000000000000000003b688da60000000000000000000000000000000000000000000000000000000012d57170000000000000000000000000000000000000000000000000000000001407093b000000000000000000000000000000000000000000000000000000008770e68200000000000000000000000000000000000000000000000000000000e9160f3e00000000000000000000000000000000000000000000000000000000c6bf691d00000000000000000000000000000000000000000000000000000000b214c901000000000000000000000000000000000000000000000000000000009bf6d8750000000000000000000000000000000000000000000000000000000022a3c00700000000000000000000000000000000000000000000000000000000899962a100000000000000000000000000000000000000000000000000000000197c139d0000000000000000000000000000000000000000000000000000000041258b5c00000000000000000000000000000000000000000000000000000000582c78d2000000000000000000000000000000000000000000000000000000008290471600000000000000000000000000000000000000000000000000000000ffaf3f1a00000000000000000000000000000000000000000000000000000000911b8ee20000000000000000000000000000000000000000000000000000000004376ff400000000000000000000000000000000000000000000000000000000000000000000000000000000c105da48a31cede9049aa8e2f66c2b3fb37d12f30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000148d36545700000000000000000000000000000000000000000000000000000000a02288f40000000000000000000000000000000000000000000000000000000029d99b10000000000000000000000000000000000000000000000000000000008f11d27f0000000000000000000000000000000000000000000000000000000076ca2e5200000000000000000000000000000000000000000000000000000000d251dc35000000000000000000000000000000000000000000000000000000007652f59d000000000000000000000000000000000000000000000000000000001301caa2000000000000000000000000000000000000000000000000000000008b480b12000000000000000000000000000000000000000000000000000000002d91a51500000000000000000000000000000000000000000000000000000000b3a4eab400000000000000000000000000000000000000000000000000000000bb0577eb00000000000000000000000000000000000000000000000000000000ad94911b00000000000000000000000000000000000000000000000000000000f495e807000000000000000000000000000000000000000000000000000000004bbcba8e00000000000000000000000000000000000000000000000000000000241ca57a00000000000000000000000000000000000000000000000000000000b6618dff00000000000000000000000000000000000000000000000000000000ff126de90000000000000000000000000000000000000000000000000000000080b297e80000000000000000000000000000000000000000000000000000000074c6b89b000000000000000000000000000000000000000000000000000000000000000000000000000000007522ee28c4aace91bd7e1fe12f48c9524987709000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000bea027c2f00000000000000000000000000000000000000000000000000000000e5f6220f000000000000000000000000000000000000000000000000000000004b141bb4000000000000000000000000000000000000000000000000000000002bf63bcc000000000000000000000000000000000000000000000000000000001963e426000000000000000000000000000000000000000000000000000000003e74aea0000000000000000000000000000000000000000000000000000000009c8eab970000000000000000000000000000000000000000000000000000000043be5eaf0000000000000000000000000000000000000000000000000000000072a30e08000000000000000000000000000000000000000000000000000000008dc5148400000000000000000000000000000000000000000000000000000000a1a23c2900000000000000000000000000000000000000000000000000000000000000000000000000000000440c7514a296e0952557ad89beecb77904d849970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000041f931c1c0000000000000000000000000000000000000000000000000000000056a8ea4800000000000000000000000000000000000000000000000000000000bbf2358e000000000000000000000000000000000000000000000000000000002c67849c000000000000000000000000000000000000000000000000000000000000000000000000000000005bc0b77a2441b1c06ec0202fb19f54274567bb8f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000019a7e155e000000000000000000000000000000000000000000000000000000000000000000000000000000003bcf4185443a339517ad4e580067f178d1b68e1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000e68d85348f227d2ebee814c38918f8a2d7d9b603000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a42a84809100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000148e2b093000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005bc0b77a2441b1c06ec0202fb19f54274567bb8f000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000849a7e155e0000000000000000000000000000000000000000000000000000000000002707000000000000000000000000b284fea86dc6d315d6cfa4db7bf1616406477e090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000aa3cb63c3ba5f42d45350afd824e7e78e0eecff700000000000000000000000000000000000000000000000000000000
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|