ETH Price: $3,580.18 (-3.09%)

Contract

0xD859701C81119aB12A1e62AF6270aD2AE05c7AB3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Manager113528762020-11-29 9:41:291464 days ago1606642889IN
0xD859701C...AE05c7AB3
0 ETH0.0009460420
Set Contract111914362020-11-04 15:20:331488 days ago1604503233IN
0xD859701C...AE05c7AB3
0 ETH0.0171369550
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.017021150
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.0164353550
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.012685550
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.012684350
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.01797650
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.0137436550
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.0131537550
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.011607450
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.010346750
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.0111178550
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.0096925550
Set Contract111914352020-11-04 15:20:181488 days ago1604503218IN
0xD859701C...AE05c7AB3
0 ETH0.0066316550
Set Contract111914302020-11-04 15:19:251488 days ago1604503165IN
0xD859701C...AE05c7AB3
0 ETH0.0069102550
Set Contract111914302020-11-04 15:19:251488 days ago1604503165IN
0xD859701C...AE05c7AB3
0 ETH0.0025195550

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ContractRegistry

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-04
*/

// File: contracts/spec_interfaces/IContractRegistry.sol

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

/// @title Contract registry contract interface
/// @dev The contract registry holds Orbs PoS contracts and managers lists
/// @dev The contract registry updates the managed contracts on changes in the contract list
/// @dev Governance functions restricted to managers access the registry to retrieve the manager address 
/// @dev The contract registry represents the source of truth for Orbs Ethereum contracts 
/// @dev By tracking the registry events or query before interaction, one can access the up to date contracts 
interface IContractRegistry {

	event ContractAddressUpdated(string contractName, address addr, bool managedContract);
	event ManagerChanged(string role, address newManager);
	event ContractRegistryUpdated(address newContractRegistry);

	/*
	* External functions
	*/

    /// Updates the contracts address and emits a corresponding event
    /// @dev governance function called only by the migrationManager or registryAdmin
    /// @param contractName is the contract name, used to identify it
    /// @param addr is the contract updated address
    /// @param managedContract indicates whether the contract is managed by the registry and notified on changes
	function setContract(string calldata contractName, address addr, bool managedContract) external /* onlyAdminOrMigrationManager */;

    /// Returns the current address of the given contracts
    /// @param contractName is the contract name, used to identify it
    /// @return addr is the contract updated address
	function getContract(string calldata contractName) external view returns (address);

    /// Returns the list of contract addresses managed by the registry
    /// @dev Managed contracts are updated on changes in the registry contracts addresses 
    /// @return addrs is the list of managed contracts
	function getManagedContracts() external view returns (address[] memory);

    /// Locks all the managed contracts 
    /// @dev governance function called only by the migrationManager or registryAdmin
    /// @dev When set all onlyWhenActive functions will revert
	function lockContracts() external /* onlyAdminOrMigrationManager */;

    /// Unlocks all the managed contracts 
    /// @dev governance function called only by the migrationManager or registryAdmin
	function unlockContracts() external /* onlyAdminOrMigrationManager */;
	
    /// Updates a manager address and emits a corresponding event
    /// @dev governance function called only by the registryAdmin
    /// @dev the managers list is a flexible list of role to the manager's address
    /// @param role is the managers' role name, for example "functionalManager"
    /// @param manager is the manager updated address
	function setManager(string calldata role, address manager) external /* onlyAdmin */;

    /// Returns the current address of the given manager
    /// @param role is the manager name, used to identify it
    /// @return addr is the manager updated address
	function getManager(string calldata role) external view returns (address);

    /// Sets a new contract registry to migrate to
    /// @dev governance function called only by the registryAdmin
    /// @dev updates the registry address record in all the managed contracts
    /// @dev by tracking the emitted ContractRegistryUpdated, tools can track the up to date contracts
    /// @param newRegistry is the new registry contract 
	function setNewContractRegistry(IContractRegistry newRegistry) external /* onlyAdmin */;

    /// Returns the previous contract registry address 
    /// @dev used when the setting the contract as a new registry to assure a valid registry
    /// @return previousContractRegistry is the previous contract registry
	function getPreviousContractRegistry() external view returns (address);
}

// File: contracts/spec_interfaces/ILockable.sol

pragma solidity 0.6.12;

/// @title lockable contract interface, allows to lock a contract
interface ILockable {

    event Locked();
    event Unlocked();

    /// Locks the contract to external non-governance function calls
    /// @dev governance function called only by the migration manager or an admin
    /// @dev typically called by the registry contract upon locking all managed contracts
    /// @dev getters and migration functions remain active also for locked contracts
    /// @dev checked by the onlyWhenActive modifier
    function lock() external /* onlyMigrationManager */;

    /// Unlocks the contract 
    /// @dev governance function called only by the migration manager or an admin
    /// @dev typically called by the registry contract upon unlocking all managed contracts
    function unlock() external /* onlyMigrationManager */;

    /// Returns the contract locking status
    /// @return isLocked is a bool indicating the contract is locked 
    function isLocked() view external returns (bool);

}

// File: contracts/spec_interfaces/IContractRegistryAccessor.sol

pragma solidity 0.6.12;


interface IContractRegistryAccessor {

    /// Sets the contract registry address
    /// @dev governance function called only by an admin
    /// @param newRegistry is the new registry contract 
    function setContractRegistry(IContractRegistry newRegistry) external /* onlyAdmin */;

    /// Returns the contract registry address
    /// @return contractRegistry is the contract registry address
    function getContractRegistry() external view returns (IContractRegistry contractRegistry);

    function setRegistryAdmin(address _registryAdmin) external /* onlyInitializationAdmin */;

}

// File: contracts/spec_interfaces/IManagedContract.sol

pragma solidity 0.6.12;

/// @title managed contract interface, used by the contracts registry to notify the contract on updates
interface IManagedContract /* is ILockable, IContractRegistryAccessor, Initializable */ {

    /// Refreshes the address of the other contracts the contract interacts with
    /// @dev called by the registry contract upon an update of a contract in the registry
    function refreshContracts() external;

}

// File: @openzeppelin/contracts/GSN/Context.sol

pragma solidity ^0.6.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: contracts/WithClaimableRegistryManagement.sol

pragma solidity 0.6.12;


/**
 * @title Claimable
 * @dev Extension for the Ownable contract, where the ownership needs to be claimed.
 * This allows the new owner to accept the transfer.
 */
contract WithClaimableRegistryManagement is Context {
    address private _registryAdmin;
    address private _pendingRegistryAdmin;

    event RegistryManagementTransferred(address indexed previousRegistryAdmin, address indexed newRegistryAdmin);

    /**
     * @dev Initializes the contract setting the deployer as the initial registryRegistryAdmin.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _registryAdmin = msgSender;
        emit RegistryManagementTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current registryAdmin.
     */
    function registryAdmin() public view returns (address) {
        return _registryAdmin;
    }

    /**
     * @dev Throws if called by any account other than the registryAdmin.
     */
    modifier onlyRegistryAdmin() {
        require(isRegistryAdmin(), "WithClaimableRegistryManagement: caller is not the registryAdmin");
        _;
    }

    /**
     * @dev Returns true if the caller is the current registryAdmin.
     */
    function isRegistryAdmin() public view returns (bool) {
        return _msgSender() == _registryAdmin;
    }

    /**
     * @dev Leaves the contract without registryAdmin. It will not be possible to call
     * `onlyManager` functions anymore. Can only be called by the current registryAdmin.
     *
     * NOTE: Renouncing registryManagement will leave the contract without an registryAdmin,
     * thereby removing any functionality that is only available to the registryAdmin.
     */
    function renounceRegistryManagement() public onlyRegistryAdmin {
        emit RegistryManagementTransferred(_registryAdmin, address(0));
        _registryAdmin = address(0);
    }

    /**
     * @dev Transfers registryManagement of the contract to a new account (`newManager`).
     */
    function _transferRegistryManagement(address newRegistryAdmin) internal {
        require(newRegistryAdmin != address(0), "RegistryAdmin: new registryAdmin is the zero address");
        emit RegistryManagementTransferred(_registryAdmin, newRegistryAdmin);
        _registryAdmin = newRegistryAdmin;
    }

    /**
     * @dev Modifier throws if called by any account other than the pendingManager.
     */
    modifier onlyPendingRegistryAdmin() {
        require(msg.sender == _pendingRegistryAdmin, "Caller is not the pending registryAdmin");
        _;
    }
    /**
     * @dev Allows the current registryAdmin to set the pendingManager address.
     * @param newRegistryAdmin The address to transfer registryManagement to.
     */
    function transferRegistryManagement(address newRegistryAdmin) public onlyRegistryAdmin {
        _pendingRegistryAdmin = newRegistryAdmin;
    }

    /**
     * @dev Allows the _pendingRegistryAdmin address to finalize the transfer.
     */
    function claimRegistryManagement() external onlyPendingRegistryAdmin {
        _transferRegistryManagement(_pendingRegistryAdmin);
        _pendingRegistryAdmin = address(0);
    }

    /**
     * @dev Returns the current pendingRegistryAdmin
    */
    function pendingRegistryAdmin() public view returns (address) {
       return _pendingRegistryAdmin;  
    }
}

// File: contracts/Initializable.sol

pragma solidity 0.6.12;

contract Initializable {

    address private _initializationAdmin;

    event InitializationComplete();

    /// Constructor
    /// Sets the initializationAdmin to the contract deployer
    /// The initialization admin may call any manager only function until initializationComplete
    constructor() public{
        _initializationAdmin = msg.sender;
    }

    modifier onlyInitializationAdmin() {
        require(msg.sender == initializationAdmin(), "sender is not the initialization admin");

        _;
    }

    /*
    * External functions
    */

    /// Returns the initializationAdmin address
    function initializationAdmin() public view returns (address) {
        return _initializationAdmin;
    }

    /// Finalizes the initialization and revokes the initializationAdmin role 
    function initializationComplete() external onlyInitializationAdmin {
        _initializationAdmin = address(0);
        emit InitializationComplete();
    }

    /// Checks if the initialization was completed
    function isInitializationComplete() public view returns (bool) {
        return _initializationAdmin == address(0);
    }

}

// File: contracts/ContractRegistry.sol

pragma solidity 0.6.12;







/// @title Contract registry
/// @dev The contract registry holds Orbs PoS contracts and managers lists
/// @dev The contract registry updates the managed contracts on changes in the contract list
/// @dev Governance functions restricted to managers access the registry to retrieve the manager address 
/// @dev The contract registry represents the source of truth for Orbs Ethereum contracts 
/// @dev By tracking the registry events or query before interaction, one can access the up to date contracts 
contract ContractRegistry is IContractRegistry, Initializable, WithClaimableRegistryManagement {

	address previousContractRegistry;
	mapping(string => address) contracts;
	address[] managedContractAddresses;
	mapping(string => address) managers;

    /// Constructor
    /// @param _previousContractRegistry is the previous contract registry address
    /// @param registryAdmin is the registry contract admin address
	constructor(address _previousContractRegistry, address registryAdmin) public {
		previousContractRegistry = _previousContractRegistry;
		_transferRegistryManagement(registryAdmin);
	}

	modifier onlyAdmin {
		require(msg.sender == registryAdmin() || msg.sender == initializationAdmin(), "sender is not an admin (registryAdmin or initializationAdmin when initialization in progress)");

		_;
	}

	modifier onlyAdminOrMigrationManager {
		require(msg.sender == registryAdmin() || msg.sender == initializationAdmin() || msg.sender == managers["migrationManager"], "sender is not an admin (registryAdmin or initializationAdmin when initialization in progress) and not the migration manager");

		_;
	}

	/*
	* External functions
	*/

    /// Updates the contracts address and emits a corresponding event
    /// @dev governance function called only by the migrationManager or registryAdmin
    /// @param contractName is the contract name, used to identify it
    /// @param addr is the contract updated address
    /// @param managedContract indicates whether the contract is managed by the registry and notified on changes
	function setContract(string calldata contractName, address addr, bool managedContract) external override onlyAdminOrMigrationManager {
		require(!managedContract || addr != address(0), "managed contract may not have address(0)");
		removeManagedContract(contracts[contractName]);
		contracts[contractName] = addr;
		if (managedContract) {
			addManagedContract(addr);
		}
		emit ContractAddressUpdated(contractName, addr, managedContract);
		notifyOnContractsChange();
	}

    /// Returns the current address of the given contracts
    /// @param contractName is the contract name, used to identify it
    /// @return addr is the contract updated address
	function getContract(string calldata contractName) external override view returns (address) {
		return contracts[contractName];
	}

    /// Returns the list of contract addresses managed by the registry
    /// @dev Managed contracts are updated on changes in the registry contracts addresses 
    /// @return addrs is the list of managed contracts
	function getManagedContracts() external override view returns (address[] memory) {
		return managedContractAddresses;
	}

    /// Locks all the managed contracts 
    /// @dev governance function called only by the migrationManager or registryAdmin
    /// @dev When set all onlyWhenActive functions will revert
	function lockContracts() external override onlyAdminOrMigrationManager {
		for (uint i = 0; i < managedContractAddresses.length; i++) {
			ILockable(managedContractAddresses[i]).lock();
		}
	}

    /// Unlocks all the managed contracts 
    /// @dev governance function called only by the migrationManager or registryAdmin
	function unlockContracts() external override onlyAdminOrMigrationManager {
		for (uint i = 0; i < managedContractAddresses.length; i++) {
			ILockable(managedContractAddresses[i]).unlock();
		}
	}

    /// Updates a manager address and emits a corresponding event
    /// @dev governance function called only by the registryAdmin
    /// @dev the managers list is a flexible list of role to the manager's address
    /// @param role is the managers' role name, for example "functionalManager"
    /// @param manager is the manager updated address
	function setManager(string calldata role, address manager) external override onlyAdmin {
		managers[role] = manager;
		emit ManagerChanged(role, manager);
	}

    /// Returns the current address of the given manager
    /// @param role is the manager name, used to identify it
    /// @return addr is the manager updated address
	function getManager(string calldata role) external override view returns (address) {
		return managers[role];
	}

    /// Sets a new contract registry to migrate to
    /// @dev governance function called only by the registryAdmin
    /// @dev updates the registry address record in all the managed contracts
    /// @dev by tracking the emitted ContractRegistryUpdated, tools can track the up to date contracts
    /// @param newRegistry is the new registry contract 
	function setNewContractRegistry(IContractRegistry newRegistry) external override onlyAdmin {
		for (uint i = 0; i < managedContractAddresses.length; i++) {
			IContractRegistryAccessor(managedContractAddresses[i]).setContractRegistry(newRegistry);
			IManagedContract(managedContractAddresses[i]).refreshContracts();
		}
		emit ContractRegistryUpdated(address(newRegistry));
	}

    /// Returns the previous contract registry address 
    /// @dev used when the setting the contract as a new registry to assure a valid registry
    /// @return previousContractRegistry is the previous contract registry
	function getPreviousContractRegistry() external override view returns (address) {
		return previousContractRegistry;
	}

	/*
	* Private methods
	*/

    /// Notifies the managed contracts on a change in a contract address
    /// @dev invokes the refreshContracts() function in each contract that queries the relevant contract addresses
	function notifyOnContractsChange() private {
		for (uint i = 0; i < managedContractAddresses.length; i++) {
			IManagedContract(managedContractAddresses[i]).refreshContracts();
		}
	}

    /// Adds a new managed contract address to the managed contracts list
	function addManagedContract(address addr) private {
		managedContractAddresses.push(addr);
	}

    /// Removes a managed contract address from the managed contracts list
	function removeManagedContract(address addr) private {
		uint length = managedContractAddresses.length;
		for (uint i = 0; i < length; i++) {
			if (managedContractAddresses[i] == addr) {
				if (i != length - 1) {
					managedContractAddresses[i] = managedContractAddresses[length-1];
				}
				managedContractAddresses.pop();
				length--;
			}
		}
	}

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_previousContractRegistry","type":"address"},{"internalType":"address","name":"registryAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"contractName","type":"string"},{"indexed":false,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"bool","name":"managedContract","type":"bool"}],"name":"ContractAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newContractRegistry","type":"address"}],"name":"ContractRegistryUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"InitializationComplete","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"role","type":"string"},{"indexed":false,"internalType":"address","name":"newManager","type":"address"}],"name":"ManagerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousRegistryAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newRegistryAdmin","type":"address"}],"name":"RegistryManagementTransferred","type":"event"},{"inputs":[],"name":"claimRegistryManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"contractName","type":"string"}],"name":"getContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getManagedContracts","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"role","type":"string"}],"name":"getManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPreviousContractRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initializationAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initializationComplete","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInitializationComplete","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRegistryAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pendingRegistryAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registryAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceRegistryManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"contractName","type":"string"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"managedContract","type":"bool"}],"name":"setContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"role","type":"string"},{"internalType":"address","name":"manager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IContractRegistry","name":"newRegistry","type":"address"}],"name":"setNewContractRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRegistryAdmin","type":"address"}],"name":"transferRegistryManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockContracts","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405162001819380380620018198339818101604052604081101561003557600080fd5b508051602090910151600080546001600160a01b031916331781556100586100c0565b600180546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620017f9833981519152908290a350600380546001600160a01b0319166001600160a01b0384161790556100b9816100c4565b5050610155565b3390565b6001600160a01b03811661010a5760405162461bcd60e51b8152600401808060200182810382526034815260200180620017c56034913960400191505060405180910390fd5b6001546040516001600160a01b03808416921690600080516020620017f983398151915290600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b61166080620001656000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348106fe3116100b257806374c16b2311610081578063acdb8e0411610066578063acdb8e04146103ba578063d0d58748146103c2578063d25235261461043b57610136565b806374c16b231461035a578063854799161461036257610136565b806348106fe31461031c5780635f94cd9c146103245780636ffc1e681461032c5780637225a4bc1461033457610136565b80632a1fac7211610109578063333df154116100ee578063333df15414610223578063358177731461022b57806337b6da131461029b57610136565b80632a1fac72146102135780632e40173c1461021b57610136565b8063078cbb7c1461013b5780631a0b2c4f1461015f5780631ee441e91461017b5780632987cea0146101eb575b600080fd5b610143610443565b604080516001600160a01b039092168252519081900360200190f35b610167610452565b604080519115158252519081900360200190f35b6101436004803603602081101561019157600080fd5b8101906020810181356401000000008111156101ac57600080fd5b8201836020820111156101be57600080fd5b803590602001918460018302840111640100000000831117156101e057600080fd5b509092509050610478565b6102116004803603602081101561020157600080fd5b50356001600160a01b03166104b2565b005b610211610549565b61021161060b565b61014361078f565b6101436004803603602081101561024157600080fd5b81019060208101813564010000000081111561025c57600080fd5b82018360208201111561026e57600080fd5b8035906020019184600183028401116401000000008311171561029057600080fd5b50909250905061079e565b610211600480360360608110156102b157600080fd5b8101906020810181356401000000008111156102cc57600080fd5b8201836020820111156102de57600080fd5b8035906020019184600183028401116401000000008311171561030057600080fd5b91935091506001600160a01b03813516906020013515156107d8565b610167610a74565b610143610a84565b610211610a93565b6102116004803603602081101561034a57600080fd5b50356001600160a01b0316610c14565b610143610e17565b61036a610e26565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103a657818101518382015260200161038e565b505050509050019250505060405180910390f35b610211610e88565b610211600480360360408110156103d857600080fd5b8101906020810181356401000000008111156103f357600080fd5b82018360208201111561040557600080fd5b8035906020019184600183028401116401000000008311171561042757600080fd5b9193509150356001600160a01b0316610f47565b6102116110bf565b6003546001600160a01b031690565b6001546000906001600160a01b0316610469611161565b6001600160a01b031614905090565b6000600683836040518083838082843791909101948552505060405192839003602001909220546001600160a01b03169250505092915050565b6104ba610452565b61050f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806115eb6040913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61055161078f565b6001600160a01b0316336001600160a01b0316146105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115916026913960400191505060405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556040517f2a2b3ea974fb057582c3b210ef8b5f81492d15673f49d4384bfa3b896a964c3c9190a1565b610613610e17565b6001600160a01b0316336001600160a01b0316148061064a575061063561078f565b6001600160a01b0316336001600160a01b0316145b806106985750604080517f6d6967726174696f6e4d616e6167657200000000000000000000000000000000815260066010820152905190819003603001902054336001600160a01b03909116145b6106ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252607b8152602001806114b9607b913960800191505060405180910390fd5b60005b60055481101561078c576005818154811061070757fe5b6000918252602082200154604080517ff83d08ba00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263f83d08ba9260048084019382900301818387803b15801561076857600080fd5b505af115801561077c573d6000803e3d6000fd5b5050600190920191506106f09050565b50565b6000546001600160a01b031690565b6000600483836040518083838082843791909101948552505060405192839003602001909220546001600160a01b03169250505092915050565b6107e0610e17565b6001600160a01b0316336001600160a01b03161480610817575061080261078f565b6001600160a01b0316336001600160a01b0316145b806108655750604080517f6d6967726174696f6e4d616e6167657200000000000000000000000000000000815260066010820152905190819003603001902054336001600160a01b03909116145b6108ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252607b8152602001806114b9607b913960800191505060405180910390fd5b8015806108cf57506001600160a01b03821615155b610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061146a6028913960400191505060405180910390fd5b61095e600485856040518083838082843791909101948552505060405192839003602001909220546001600160a01b031691506111659050565b8160048585604051808383808284379190910194855250506040519283900360200190922080546001600160a01b03949094167fffffffffffffffffffffffff000000000000000000000000000000000000000090941693909317909255505080156109cd576109cd8261128d565b7faf299646760f6fbf25862e53df5b06cf99239f0ae9cfca9ed96d7b459affff20848484846040518080602001846001600160a01b0316815260200183151581526020018281038252868682818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920182900397509095505050505050a1610a6e6112f7565b50505050565b6000546001600160a01b03161590565b6002546001600160a01b031690565b610a9b610e17565b6001600160a01b0316336001600160a01b03161480610ad25750610abd61078f565b6001600160a01b0316336001600160a01b0316145b80610b205750604080517f6d6967726174696f6e4d616e6167657200000000000000000000000000000000815260066010820152905190819003603001902054336001600160a01b03909116145b610b75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252607b8152602001806114b9607b913960800191505060405180910390fd5b60005b60055481101561078c5760058181548110610b8f57fe5b6000918252602082200154604080517fa69df4b500000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a69df4b59260048084019382900301818387803b158015610bf057600080fd5b505af1158015610c04573d6000803e3d6000fd5b505060019092019150610b789050565b610c1c610e17565b6001600160a01b0316336001600160a01b03161480610c535750610c3e61078f565b6001600160a01b0316336001600160a01b0316145b610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605d815260200180611534605d913960600191505060405180910390fd5b60005b600554811015610dd75760058181548110610cc257fe5b6000918252602082200154604080517ffcd13d650000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301529151919092169263fcd13d65926024808201939182900301818387803b158015610d2d57600080fd5b505af1158015610d41573d6000803e3d6000fd5b5050505060058181548110610d5257fe5b6000918252602082200154604080517feec0701f00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263eec0701f9260048084019382900301818387803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505060019092019150610cab9050565b50604080516001600160a01b038316815290517fb3a6e7c81ebdb0cf9bf28d5ddf6678ded8d73b44f2eee06ca3974dbb9f41ce7e9181900360200190a150565b6001546001600160a01b031690565b60606005805480602002602001604051908101604052809291908181526020018280548015610e7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e60575b5050505050905090565b610e90610452565b610ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806115eb6040913960400191505060405180910390fd5b6001546040516000916001600160a01b0316907f1f5f028be638d6a0e3b8d56fd05b812ce325cc8dc73cdb0e16df94d6b2725c2e908390a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b610f4f610e17565b6001600160a01b0316336001600160a01b03161480610f865750610f7161078f565b6001600160a01b0316336001600160a01b0316145b610fdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605d815260200180611534605d913960600191505060405180910390fd5b806006848460405180838380828437919091019485525050604080516020948190038501812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0397881617905594861693850193909352505080825281018390527f325468706c8d44b035396cba93fd6c8dabe53c1f8b51dd2634c62ebe9ddb0de9908490849084908060608101858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1505050565b6002546001600160a01b03163314611122576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806114926027913960400191505060405180910390fd5b600254611137906001600160a01b0316611396565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3390565b60055460005b8181101561128857826001600160a01b03166005828154811061118a57fe5b6000918252602090912001546001600160a01b031614156112805760018203811461121457600560018303815481106111bf57fe5b600091825260209091200154600580546001600160a01b0390921691839081106111e557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600580548061121f57fe5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590810190915591909101905b60010161116b565b505050565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60005b60055481101561078c576005818154811061131157fe5b6000918252602082200154604080517feec0701f00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263eec0701f9260048084019382900301818387803b15801561137257600080fd5b505af1158015611386573d6000803e3d6000fd5b5050600190920191506112fa9050565b6001600160a01b0381166113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806115b76034913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f1f5f028be638d6a0e3b8d56fd05b812ce325cc8dc73cdb0e16df94d6b2725c2e90600090a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905556fe6d616e6167656420636f6e7472616374206d6179206e6f742068617665206164647265737328302943616c6c6572206973206e6f74207468652070656e64696e6720726567697374727941646d696e73656e646572206973206e6f7420616e2061646d696e2028726567697374727941646d696e206f7220696e697469616c697a6174696f6e41646d696e207768656e20696e697469616c697a6174696f6e20696e2070726f67726573732920616e64206e6f7420746865206d6967726174696f6e206d616e6167657273656e646572206973206e6f7420616e2061646d696e2028726567697374727941646d696e206f7220696e697469616c697a6174696f6e41646d696e207768656e20696e697469616c697a6174696f6e20696e2070726f67726573732973656e646572206973206e6f742074686520696e697469616c697a6174696f6e2061646d696e526567697374727941646d696e3a206e657720726567697374727941646d696e20697320746865207a65726f206164647265737357697468436c61696d61626c6552656769737472794d616e6167656d656e743a2063616c6c6572206973206e6f742074686520726567697374727941646d696ea2646970667358221220d7b48cc81d2497958d37681963f966b7e213d41fdc55f74f5a207d4c2f0235d864736f6c634300060c0033526567697374727941646d696e3a206e657720726567697374727941646d696e20697320746865207a65726f20616464726573731f5f028be638d6a0e3b8d56fd05b812ce325cc8dc73cdb0e16df94d6b2725c2e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1fd5233e60e7ef797025fe9dd066d60d59bcb92

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101365760003560e01c806348106fe3116100b257806374c16b2311610081578063acdb8e0411610066578063acdb8e04146103ba578063d0d58748146103c2578063d25235261461043b57610136565b806374c16b231461035a578063854799161461036257610136565b806348106fe31461031c5780635f94cd9c146103245780636ffc1e681461032c5780637225a4bc1461033457610136565b80632a1fac7211610109578063333df154116100ee578063333df15414610223578063358177731461022b57806337b6da131461029b57610136565b80632a1fac72146102135780632e40173c1461021b57610136565b8063078cbb7c1461013b5780631a0b2c4f1461015f5780631ee441e91461017b5780632987cea0146101eb575b600080fd5b610143610443565b604080516001600160a01b039092168252519081900360200190f35b610167610452565b604080519115158252519081900360200190f35b6101436004803603602081101561019157600080fd5b8101906020810181356401000000008111156101ac57600080fd5b8201836020820111156101be57600080fd5b803590602001918460018302840111640100000000831117156101e057600080fd5b509092509050610478565b6102116004803603602081101561020157600080fd5b50356001600160a01b03166104b2565b005b610211610549565b61021161060b565b61014361078f565b6101436004803603602081101561024157600080fd5b81019060208101813564010000000081111561025c57600080fd5b82018360208201111561026e57600080fd5b8035906020019184600183028401116401000000008311171561029057600080fd5b50909250905061079e565b610211600480360360608110156102b157600080fd5b8101906020810181356401000000008111156102cc57600080fd5b8201836020820111156102de57600080fd5b8035906020019184600183028401116401000000008311171561030057600080fd5b91935091506001600160a01b03813516906020013515156107d8565b610167610a74565b610143610a84565b610211610a93565b6102116004803603602081101561034a57600080fd5b50356001600160a01b0316610c14565b610143610e17565b61036a610e26565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103a657818101518382015260200161038e565b505050509050019250505060405180910390f35b610211610e88565b610211600480360360408110156103d857600080fd5b8101906020810181356401000000008111156103f357600080fd5b82018360208201111561040557600080fd5b8035906020019184600183028401116401000000008311171561042757600080fd5b9193509150356001600160a01b0316610f47565b6102116110bf565b6003546001600160a01b031690565b6001546000906001600160a01b0316610469611161565b6001600160a01b031614905090565b6000600683836040518083838082843791909101948552505060405192839003602001909220546001600160a01b03169250505092915050565b6104ba610452565b61050f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806115eb6040913960400191505060405180910390fd5b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61055161078f565b6001600160a01b0316336001600160a01b0316146105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115916026913960400191505060405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556040517f2a2b3ea974fb057582c3b210ef8b5f81492d15673f49d4384bfa3b896a964c3c9190a1565b610613610e17565b6001600160a01b0316336001600160a01b0316148061064a575061063561078f565b6001600160a01b0316336001600160a01b0316145b806106985750604080517f6d6967726174696f6e4d616e6167657200000000000000000000000000000000815260066010820152905190819003603001902054336001600160a01b03909116145b6106ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252607b8152602001806114b9607b913960800191505060405180910390fd5b60005b60055481101561078c576005818154811061070757fe5b6000918252602082200154604080517ff83d08ba00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263f83d08ba9260048084019382900301818387803b15801561076857600080fd5b505af115801561077c573d6000803e3d6000fd5b5050600190920191506106f09050565b50565b6000546001600160a01b031690565b6000600483836040518083838082843791909101948552505060405192839003602001909220546001600160a01b03169250505092915050565b6107e0610e17565b6001600160a01b0316336001600160a01b03161480610817575061080261078f565b6001600160a01b0316336001600160a01b0316145b806108655750604080517f6d6967726174696f6e4d616e6167657200000000000000000000000000000000815260066010820152905190819003603001902054336001600160a01b03909116145b6108ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252607b8152602001806114b9607b913960800191505060405180910390fd5b8015806108cf57506001600160a01b03821615155b610924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061146a6028913960400191505060405180910390fd5b61095e600485856040518083838082843791909101948552505060405192839003602001909220546001600160a01b031691506111659050565b8160048585604051808383808284379190910194855250506040519283900360200190922080546001600160a01b03949094167fffffffffffffffffffffffff000000000000000000000000000000000000000090941693909317909255505080156109cd576109cd8261128d565b7faf299646760f6fbf25862e53df5b06cf99239f0ae9cfca9ed96d7b459affff20848484846040518080602001846001600160a01b0316815260200183151581526020018281038252868682818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920182900397509095505050505050a1610a6e6112f7565b50505050565b6000546001600160a01b03161590565b6002546001600160a01b031690565b610a9b610e17565b6001600160a01b0316336001600160a01b03161480610ad25750610abd61078f565b6001600160a01b0316336001600160a01b0316145b80610b205750604080517f6d6967726174696f6e4d616e6167657200000000000000000000000000000000815260066010820152905190819003603001902054336001600160a01b03909116145b610b75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252607b8152602001806114b9607b913960800191505060405180910390fd5b60005b60055481101561078c5760058181548110610b8f57fe5b6000918252602082200154604080517fa69df4b500000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263a69df4b59260048084019382900301818387803b158015610bf057600080fd5b505af1158015610c04573d6000803e3d6000fd5b505060019092019150610b789050565b610c1c610e17565b6001600160a01b0316336001600160a01b03161480610c535750610c3e61078f565b6001600160a01b0316336001600160a01b0316145b610ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605d815260200180611534605d913960600191505060405180910390fd5b60005b600554811015610dd75760058181548110610cc257fe5b6000918252602082200154604080517ffcd13d650000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301529151919092169263fcd13d65926024808201939182900301818387803b158015610d2d57600080fd5b505af1158015610d41573d6000803e3d6000fd5b5050505060058181548110610d5257fe5b6000918252602082200154604080517feec0701f00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263eec0701f9260048084019382900301818387803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505060019092019150610cab9050565b50604080516001600160a01b038316815290517fb3a6e7c81ebdb0cf9bf28d5ddf6678ded8d73b44f2eee06ca3974dbb9f41ce7e9181900360200190a150565b6001546001600160a01b031690565b60606005805480602002602001604051908101604052809291908181526020018280548015610e7e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e60575b5050505050905090565b610e90610452565b610ee5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260408152602001806115eb6040913960400191505060405180910390fd5b6001546040516000916001600160a01b0316907f1f5f028be638d6a0e3b8d56fd05b812ce325cc8dc73cdb0e16df94d6b2725c2e908390a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b610f4f610e17565b6001600160a01b0316336001600160a01b03161480610f865750610f7161078f565b6001600160a01b0316336001600160a01b0316145b610fdb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252605d815260200180611534605d913960600191505060405180910390fd5b806006848460405180838380828437919091019485525050604080516020948190038501812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0397881617905594861693850193909352505080825281018390527f325468706c8d44b035396cba93fd6c8dabe53c1f8b51dd2634c62ebe9ddb0de9908490849084908060608101858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016909201829003965090945050505050a1505050565b6002546001600160a01b03163314611122576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806114926027913960400191505060405180910390fd5b600254611137906001600160a01b0316611396565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b3390565b60055460005b8181101561128857826001600160a01b03166005828154811061118a57fe5b6000918252602090912001546001600160a01b031614156112805760018203811461121457600560018303815481106111bf57fe5b600091825260209091200154600580546001600160a01b0390921691839081106111e557fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600580548061121f57fe5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590810190915591909101905b60010161116b565b505050565b600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60005b60055481101561078c576005818154811061131157fe5b6000918252602082200154604080517feec0701f00000000000000000000000000000000000000000000000000000000815290516001600160a01b039092169263eec0701f9260048084019382900301818387803b15801561137257600080fd5b505af1158015611386573d6000803e3d6000fd5b5050600190920191506112fa9050565b6001600160a01b0381166113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806115b76034913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f1f5f028be638d6a0e3b8d56fd05b812ce325cc8dc73cdb0e16df94d6b2725c2e90600090a3600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905556fe6d616e6167656420636f6e7472616374206d6179206e6f742068617665206164647265737328302943616c6c6572206973206e6f74207468652070656e64696e6720726567697374727941646d696e73656e646572206973206e6f7420616e2061646d696e2028726567697374727941646d696e206f7220696e697469616c697a6174696f6e41646d696e207768656e20696e697469616c697a6174696f6e20696e2070726f67726573732920616e64206e6f7420746865206d6967726174696f6e206d616e6167657273656e646572206973206e6f7420616e2061646d696e2028726567697374727941646d696e206f7220696e697469616c697a6174696f6e41646d696e207768656e20696e697469616c697a6174696f6e20696e2070726f67726573732973656e646572206973206e6f742074686520696e697469616c697a6174696f6e2061646d696e526567697374727941646d696e3a206e657720726567697374727941646d696e20697320746865207a65726f206164647265737357697468436c61696d61626c6552656769737472794d616e6167656d656e743a2063616c6c6572206973206e6f742074686520726567697374727941646d696ea2646970667358221220d7b48cc81d2497958d37681963f966b7e213d41fdc55f74f5a207d4c2f0235d864736f6c634300060c0033

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

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1fd5233e60e7ef797025fe9dd066d60d59bcb92

-----Decoded View---------------
Arg [0] : _previousContractRegistry (address): 0x0000000000000000000000000000000000000000
Arg [1] : registryAdmin (address): 0xf1fD5233E60E7Ef797025FE9DD066d60d59BcB92

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 000000000000000000000000f1fd5233e60e7ef797025fe9dd066d60d59bcb92


Deployed Bytecode Sourcemap

12631:6408:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17879:121;;;:::i;:::-;;;;-1:-1:-1;;;;;17879:121:0;;;;;;;;;;;;;;8600:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;16785:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16785:114:0;;-1:-1:-1;16785:114:0;-1:-1:-1;16785:114:0;:::i;10161:146::-;;;;;;;;;;;;;;;;-1:-1:-1;10161:146:0;-1:-1:-1;;;;;10161:146:0;;:::i;:::-;;11687:159;;;:::i;15556:196::-;;;:::i;11492:107::-;;;:::i;14879:132::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14879:132:0;;-1:-1:-1;14879:132:0;-1:-1:-1;14879:132:0;:::i;14209:480::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14209:480:0;-1:-1:-1;;;;;;14209:480:0;;;;;;;;;;:::i;11906:123::-;;;:::i;10675:110::-;;;:::i;15888:200::-;;;:::i;17264:383::-;;;;;;;;;;;;;;;;-1:-1:-1;17264:383:0;-1:-1:-1;;;;;17264:383:0;;:::i;8154:95::-;;;:::i;15236:122::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9104:182;;;:::i;16447:160::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16447:160:0;-1:-1:-1;16447:160:0;-1:-1:-1;;;;;16447:160:0;;:::i;10413:183::-;;;:::i;17879:121::-;17971:24;;-1:-1:-1;;;;;17971:24:0;17879:121;:::o;8600:110::-;8688:14;;8648:4;;-1:-1:-1;;;;;8688:14:0;8672:12;:10;:12::i;:::-;-1:-1:-1;;;;;8672:30:0;;8665:37;;8600:110;:::o;16785:114::-;16859:7;16880:8;16889:4;;16880:14;;;;;;;;;;;;;;;;-1:-1:-1;;16880:14:0;;;;;;;;;;;;-1:-1:-1;;;;;16880:14:0;;-1:-1:-1;;;16785:114:0;;;;:::o;10161:146::-;8398:17;:15;:17::i;:::-;8390:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10259:21:::1;:40:::0;;;::::1;-1:-1:-1::0;;;;;10259:40:0;;;::::1;::::0;;;::::1;::::0;;10161:146::o;11687:159::-;11305:21;:19;:21::i;:::-;-1:-1:-1;;;;;11291:35:0;:10;-1:-1:-1;;;;;11291:35:0;;11283:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11796:1:::1;11765:33:::0;;;::::1;::::0;;11814:24:::1;::::0;::::1;::::0;11796:1;11814:24:::1;11687:159::o:0;15556:196::-;13532:15;:13;:15::i;:::-;-1:-1:-1;;;;;13518:29:0;:10;-1:-1:-1;;;;;13518:29:0;;:68;;;;13565:21;:19;:21::i;:::-;-1:-1:-1;;;;;13551:35:0;:10;-1:-1:-1;;;;;13551:35:0;;13518:68;:114;;;-1:-1:-1;13604:28:0;;;;;;:8;:28;;;;;;;;;;;;;;;13590:10;-1:-1:-1;;;;;13604:28:0;;;13590:42;13518:114;13510:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15637:6:::1;15632:116;15653:24;:31:::0;15649:35;::::1;15632:116;;;15707:24;15732:1;15707:27;;;;;;;;;::::0;;;::::1;::::0;;::::1;::::0;15697:45:::1;::::0;;;;;;;-1:-1:-1;;;;;15707:27:0;;::::1;::::0;15697:43:::1;::::0;:45:::1;::::0;;::::1;::::0;;;;;;15707:27;;15697:45;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;15686:3:0::1;::::0;;::::1;::::0;-1:-1:-1;15632:116:0::1;::::0;-1:-1:-1;15632:116:0::1;;;15556:196::o:0;11492:107::-;11544:7;11571:20;-1:-1:-1;;;;;11571:20:0;11492:107;:::o;14879:132::-;14962:7;14983:9;14993:12;;14983:23;;;;;;;;;;;;;;;;-1:-1:-1;;14983:23:0;;;;;;;;;;;;-1:-1:-1;;;;;14983:23:0;;-1:-1:-1;;;14879:132:0;;;;:::o;14209:480::-;13532:15;:13;:15::i;:::-;-1:-1:-1;;;;;13518:29:0;:10;-1:-1:-1;;;;;13518:29:0;;:68;;;;13565:21;:19;:21::i;:::-;-1:-1:-1;;;;;13551:35:0;:10;-1:-1:-1;;;;;13551:35:0;;13518:68;:114;;;-1:-1:-1;13604:28:0;;;;;;:8;:28;;;;;;;;;;;;;;;13590:10;-1:-1:-1;;;;;13604:28:0;;;13590:42;13518:114;13510:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14356:15:::1;14355:16;:38;;;-1:-1:-1::0;;;;;;14375:18:0;::::1;::::0;::::1;14355:38;14347:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14443:46;14465:9;14475:12;;14465:23;;;;;;;;;::::0;;;::::1;::::0;;;-1:-1:-1;;14465:23:0::1;::::0;;;;;::::1;::::0;;;;;-1:-1:-1;;;;;14465:23:0::1;::::0;-1:-1:-1;14443:21:0::1;::::0;-1:-1:-1;14443:46:0:i:1;:::-;14520:4;14494:9;14504:12;;14494:23;;;;;;;;;::::0;;;::::1;::::0;;;-1:-1:-1;;14494:23:0::1;::::0;;;;;::::1;::::0;;;;:30;;-1:-1:-1;;;;;14494:30:0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;14529:57:0;::::1;;;14556:24;14575:4;14556:18;:24::i;:::-;14595:59;14618:12;;14632:4;14638:15;14595:59;;;;;;;-1:-1:-1::0;;;;;14595:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;14595:59:0;;-1:-1:-1;;;;;;14595:59:0::1;14659:25;:23;:25::i;:::-;14209:480:::0;;;;:::o;11906:123::-;11963:4;11987:20;-1:-1:-1;;;;;11987:20:0;:34;11906:123;:::o;10675:110::-;10754:21;;-1:-1:-1;;;;;10754:21:0;10675:110;:::o;15888:200::-;13532:15;:13;:15::i;:::-;-1:-1:-1;;;;;13518:29:0;:10;-1:-1:-1;;;;;13518:29:0;;:68;;;;13565:21;:19;:21::i;:::-;-1:-1:-1;;;;;13551:35:0;:10;-1:-1:-1;;;;;13551:35:0;;13518:68;:114;;;-1:-1:-1;13604:28:0;;;;;;:8;:28;;;;;;;;;;;;;;;13590:10;-1:-1:-1;;;;;13604:28:0;;;13590:42;13518:114;13510:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15971:6:::1;15966:118;15987:24;:31:::0;15983:35;::::1;15966:118;;;16041:24;16066:1;16041:27;;;;;;;;;::::0;;;::::1;::::0;;::::1;::::0;16031:47:::1;::::0;;;;;;;-1:-1:-1;;;;;16041:27:0;;::::1;::::0;16031:45:::1;::::0;:47:::1;::::0;;::::1;::::0;;;;;;16041:27;;16031:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16020:3:0::1;::::0;;::::1;::::0;-1:-1:-1;15966:118:0::1;::::0;-1:-1:-1;15966:118:0::1;17264:383:::0;13298:15;:13;:15::i;:::-;-1:-1:-1;;;;;13284:29:0;:10;-1:-1:-1;;;;;13284:29:0;;:68;;;;13331:21;:19;:21::i;:::-;-1:-1:-1;;;;;13317:35:0;:10;-1:-1:-1;;;;;13317:35:0;;13284:68;13276:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17365:6:::1;17360:228;17381:24;:31:::0;17377:35;::::1;17360:228;;;17451:24;17476:1;17451:27;;;;;;;;;::::0;;;::::1;::::0;;::::1;::::0;17425:87:::1;::::0;;;;;-1:-1:-1;;;;;17425:87:0;;::::1;;::::0;::::1;::::0;;;17451:27;;;::::1;::::0;17425:74:::1;::::0;:87;;;;;;;;;;;17451:27;;17425:87;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17535:24;17560:1;17535:27;;;;;;;;;::::0;;;::::1;::::0;;::::1;::::0;17518:64:::1;::::0;;;;;;;-1:-1:-1;;;;;17535:27:0;;::::1;::::0;17518:62:::1;::::0;:64:::1;::::0;;::::1;::::0;;;;;;17535:27;;17518:64;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17414:3:0::1;::::0;;::::1;::::0;-1:-1:-1;17360:228:0::1;::::0;-1:-1:-1;17360:228:0::1;;-1:-1:-1::0;17597:45:0::1;::::0;;-1:-1:-1;;;;;17597:45:0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;17264:383:::0;:::o;8154:95::-;8227:14;;-1:-1:-1;;;;;8227:14:0;8154:95;:::o;15236:122::-;15299:16;15329:24;15322:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15322:31:0;;;;;;;;;;;;;;;;;;;;;;;15236:122;:::o;9104:182::-;8398:17;:15;:17::i;:::-;8390:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9213:14:::1;::::0;9183:57:::1;::::0;9237:1:::1;::::0;-1:-1:-1;;;;;9213:14:0::1;::::0;9183:57:::1;::::0;9237:1;;9183:57:::1;9251:14;:27:::0;;;::::1;::::0;;9104:182::o;16447:160::-;13298:15;:13;:15::i;:::-;-1:-1:-1;;;;;13284:29:0;:10;-1:-1:-1;;;;;13284:29:0;;:68;;;;13331:21;:19;:21::i;:::-;-1:-1:-1;;;;;13317:35:0;:10;-1:-1:-1;;;;;13317:35:0;;13284:68;13276:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16556:7:::1;16539:8;16548:4;;16539:14;;;;;;;;;::::0;;;::::1;::::0;;;-1:-1:-1;;16539:14:0::1;::::0;;::::1;::::0;;;;;;;;:24;;;::::1;-1:-1:-1::0;;;;;16539:24:0;;::::1;;::::0;;16573:29;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;16573:29:0;;;;;;;;::::1;::::0;16588:4;;16573:29;;;;16539:14;16573:29;;;16588:4;16573:29;;16588:4;16573:29;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;16573:29:0;;-1:-1:-1;;;;;16573:29:0::1;16447:160:::0;;;:::o;10413:183::-;9892:21;;-1:-1:-1;;;;;9892:21:0;9878:10;:35;9870:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10521:21:::1;::::0;10493:50:::1;::::0;-1:-1:-1;;;;;10521:21:0::1;10493:27;:50::i;:::-;10554:21;:34:::0;;;::::1;::::0;;10413:183::o;6899:106::-;6987:10;6899:106;:::o;18670:364::-;18742:24;:31;18728:11;18778:252;18799:6;18795:1;:10;18778:252;;;18853:4;-1:-1:-1;;;;;18822:35:0;:24;18847:1;18822:27;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18822:27:0;:35;18818:207;;;18884:1;18875:6;:10;18870:1;:15;18866:101;;18925:24;18957:1;18950:6;:8;18925:34;;;;;;;;;;;;;;;;;;18895:24;:27;;-1:-1:-1;;;;;18925:34:0;;;;18920:1;;18895:27;;;;;;;;;;;;;;:64;;;;;-1:-1:-1;;;;;18895:64:0;;;;;-1:-1:-1;;;;;18895:64:0;;;;;;18866:101;18973:24;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19010:8;;;;;18818:207;18807:3;;18778:252;;;;18670:364;;:::o;18494:95::-;18549:24;:35;;;;;;;-1:-1:-1;18549:35:0;;;;;;;;;;-1:-1:-1;;;;;18549:35:0;;;;;;;;;;18494:95::o;18227:187::-;18280:6;18275:135;18296:24;:31;18292:35;;18275:135;;;18357:24;18382:1;18357:27;;;;;;;;;;;;;;;;;18340:64;;;;;;;;-1:-1:-1;;;;;18357:27:0;;;;18340:62;;:64;;;;;;;;;;18357:27;;18340:64;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18329:3:0;;;;;-1:-1:-1;18275:135:0;;-1:-1:-1;18275:135:0;9403:309;-1:-1:-1;;;;;9494:30:0;;9486:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9627:14;;9597:63;;-1:-1:-1;;;;;9597:63:0;;;;9627:14;;9597:63;;9627:14;;9597:63;9671:14;:33;;;;-1:-1:-1;;;;;9671:33:0;;;;;;;;;;9403:309::o

Swarm Source

ipfs://d7b48cc81d2497958d37681963f966b7e213d41fdc55f74f5a207d4c2f0235d8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ 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.