Overview
Max Total Supply
0
Holders
0
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TimelockController
Compiler Version
v0.8.5+commit.a4f2e591
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-20 */ // Sources flattened with hardhat v2.9.5 https://hardhat.org // File @openzeppelin/contracts/access/[email protected] // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @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 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) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControl.sol) /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view virtual override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view virtual { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view virtual override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File contracts/utils/TimelockController.sol // OpenZeppelin Contracts v4.4.1 (governance/TimelockController.sol) // Modification: Changed import to node_modules location /** * @dev Contract module which acts as a timelocked controller. When set as the * owner of an `Ownable` smart contract, it enforces a timelock on all * `onlyOwner` maintenance operations. This gives time for users of the * controlled contract to exit before a potentially dangerous maintenance * operation is applied. * * By default, this contract is self administered, meaning administration tasks * have to go through the timelock process. The proposer (resp executor) role * is in charge of proposing (resp executing) operations. A common use case is * to position this {TimelockController} as the owner of a smart contract, with * a multisig or a DAO as the sole proposer. * * _Available since v3.3._ */ contract TimelockController is AccessControl { bytes32 public constant TIMELOCK_ADMIN_ROLE = keccak256("TIMELOCK_ADMIN_ROLE"); bytes32 public constant PROPOSER_ROLE = keccak256("PROPOSER_ROLE"); bytes32 public constant EXECUTOR_ROLE = keccak256("EXECUTOR_ROLE"); uint256 internal constant _DONE_TIMESTAMP = uint256(1); mapping(bytes32 => uint256) private _timestamps; uint256 private _minDelay; /** * @dev Emitted when a call is scheduled as part of operation `id`. */ event CallScheduled( bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay ); /** * @dev Emitted when a call is performed as part of operation `id`. */ event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data); /** * @dev Emitted when operation `id` is cancelled. */ event Cancelled(bytes32 indexed id); /** * @dev Emitted when the minimum delay for future operations is modified. */ event MinDelayChange(uint256 oldDuration, uint256 newDuration); /** * @dev Initializes the contract with a given `minDelay`. */ constructor( uint256 minDelay, address[] memory proposers, address[] memory executors ) { _setRoleAdmin(TIMELOCK_ADMIN_ROLE, TIMELOCK_ADMIN_ROLE); _setRoleAdmin(PROPOSER_ROLE, TIMELOCK_ADMIN_ROLE); _setRoleAdmin(EXECUTOR_ROLE, TIMELOCK_ADMIN_ROLE); // deployer + self administration _setupRole(TIMELOCK_ADMIN_ROLE, _msgSender()); _setupRole(TIMELOCK_ADMIN_ROLE, address(this)); // register proposers for (uint256 i = 0; i < proposers.length; ++i) { _setupRole(PROPOSER_ROLE, proposers[i]); } // register executors for (uint256 i = 0; i < executors.length; ++i) { _setupRole(EXECUTOR_ROLE, executors[i]); } _minDelay = minDelay; emit MinDelayChange(0, minDelay); } /** * @dev Modifier to make a function callable only by a certain role. In * addition to checking the sender's role, `address(0)` 's role is also * considered. Granting a role to `address(0)` is equivalent to enabling * this role for everyone. */ modifier onlyRoleOrOpenRole(bytes32 role) { if (!hasRole(role, address(0))) { _checkRole(role, _msgSender()); } _; } /** * @dev Contract might receive/hold ETH as part of the maintenance process. */ receive() external payable {} /** * @dev Returns whether an id correspond to a registered operation. This * includes both Pending, Ready and Done operations. */ function isOperation(bytes32 id) public view virtual returns (bool pending) { return getTimestamp(id) > 0; } /** * @dev Returns whether an operation is pending or not. */ function isOperationPending(bytes32 id) public view virtual returns (bool pending) { return getTimestamp(id) > _DONE_TIMESTAMP; } /** * @dev Returns whether an operation is ready or not. */ function isOperationReady(bytes32 id) public view virtual returns (bool ready) { uint256 timestamp = getTimestamp(id); return timestamp > _DONE_TIMESTAMP && timestamp <= block.timestamp; } /** * @dev Returns whether an operation is done or not. */ function isOperationDone(bytes32 id) public view virtual returns (bool done) { return getTimestamp(id) == _DONE_TIMESTAMP; } /** * @dev Returns the timestamp at with an operation becomes ready (0 for * unset operations, 1 for done operations). */ function getTimestamp(bytes32 id) public view virtual returns (uint256 timestamp) { return _timestamps[id]; } /** * @dev Returns the minimum delay for an operation to become valid. * * This value can be changed by executing an operation that calls `updateDelay`. */ function getMinDelay() public view virtual returns (uint256 duration) { return _minDelay; } /** * @dev Returns the identifier of an operation containing a single * transaction. */ function hashOperation( address target, uint256 value, bytes calldata data, bytes32 predecessor, bytes32 salt ) public pure virtual returns (bytes32 hash) { return keccak256(abi.encode(target, value, data, predecessor, salt)); } /** * @dev Returns the identifier of an operation containing a batch of * transactions. */ function hashOperationBatch( address[] calldata targets, uint256[] calldata values, bytes[] calldata datas, bytes32 predecessor, bytes32 salt ) public pure virtual returns (bytes32 hash) { return keccak256(abi.encode(targets, values, datas, predecessor, salt)); } /** * @dev Schedule an operation containing a single transaction. * * Emits a {CallScheduled} event. * * Requirements: * * - the caller must have the 'proposer' role. */ function schedule( address target, uint256 value, bytes calldata data, bytes32 predecessor, bytes32 salt, uint256 delay ) public virtual onlyRole(PROPOSER_ROLE) { bytes32 id = hashOperation(target, value, data, predecessor, salt); _schedule(id, delay); emit CallScheduled(id, 0, target, value, data, predecessor, delay); } /** * @dev Schedule an operation containing a batch of transactions. * * Emits one {CallScheduled} event per transaction in the batch. * * Requirements: * * - the caller must have the 'proposer' role. */ function scheduleBatch( address[] calldata targets, uint256[] calldata values, bytes[] calldata datas, bytes32 predecessor, bytes32 salt, uint256 delay ) public virtual onlyRole(PROPOSER_ROLE) { require(targets.length == values.length, "TimelockController: length mismatch"); require(targets.length == datas.length, "TimelockController: length mismatch"); bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt); _schedule(id, delay); for (uint256 i = 0; i < targets.length; ++i) { emit CallScheduled(id, i, targets[i], values[i], datas[i], predecessor, delay); } } /** * @dev Schedule an operation that is to becomes valid after a given delay. */ function _schedule(bytes32 id, uint256 delay) private { require(!isOperation(id), "TimelockController: operation already scheduled"); require(delay >= getMinDelay(), "TimelockController: insufficient delay"); _timestamps[id] = block.timestamp + delay; } /** * @dev Cancel an operation. * * Requirements: * * - the caller must have the 'proposer' role. */ function cancel(bytes32 id) public virtual onlyRole(PROPOSER_ROLE) { require(isOperationPending(id), "TimelockController: operation cannot be cancelled"); delete _timestamps[id]; emit Cancelled(id); } /** * @dev Execute an (ready) operation containing a single transaction. * * Emits a {CallExecuted} event. * * Requirements: * * - the caller must have the 'executor' role. */ function execute( address target, uint256 value, bytes calldata data, bytes32 predecessor, bytes32 salt ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) { bytes32 id = hashOperation(target, value, data, predecessor, salt); _beforeCall(id, predecessor); _call(id, 0, target, value, data); _afterCall(id); } /** * @dev Execute an (ready) operation containing a batch of transactions. * * Emits one {CallExecuted} event per transaction in the batch. * * Requirements: * * - the caller must have the 'executor' role. */ function executeBatch( address[] calldata targets, uint256[] calldata values, bytes[] calldata datas, bytes32 predecessor, bytes32 salt ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) { require(targets.length == values.length, "TimelockController: length mismatch"); require(targets.length == datas.length, "TimelockController: length mismatch"); bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt); _beforeCall(id, predecessor); for (uint256 i = 0; i < targets.length; ++i) { _call(id, i, targets[i], values[i], datas[i]); } _afterCall(id); } /** * @dev Checks before execution of an operation's calls. */ function _beforeCall(bytes32 id, bytes32 predecessor) private view { require(isOperationReady(id), "TimelockController: operation is not ready"); require(predecessor == bytes32(0) || isOperationDone(predecessor), "TimelockController: missing dependency"); } /** * @dev Checks after execution of an operation's calls. */ function _afterCall(bytes32 id) private { require(isOperationReady(id), "TimelockController: operation is not ready"); _timestamps[id] = _DONE_TIMESTAMP; } /** * @dev Execute an operation's call. * * Emits a {CallExecuted} event. */ function _call( bytes32 id, uint256 index, address target, uint256 value, bytes calldata data ) private { (bool success, ) = target.call{value: value}(data); require(success, "TimelockController: underlying transaction reverted"); emit CallExecuted(id, index, target, value, data); } /** * @dev Changes the minimum timelock duration for future operations. * * Emits a {MinDelayChange} event. * * Requirements: * * - the caller must be the timelock itself. This can only be achieved by scheduling and later executing * an operation where the timelock is the target and the data is the ABI-encoded call to this function. */ function updateDelay(uint256 newDelay) external virtual { require(msg.sender == address(this), "TimelockController: caller must be timelock"); emit MinDelayChange(_minDelay, newDelay); _minDelay = newDelay; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"minDelay","type":"uint256"},{"internalType":"address[]","name":"proposers","type":"address[]"},{"internalType":"address[]","name":"executors","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"CallExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"CallScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"Cancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"MinDelayChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"datas","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"executeBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getMinDelay","outputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperation","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"datas","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperationBatch","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperation","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationDone","outputs":[{"internalType":"bool","name":"done","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationPending","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationReady","outputs":[{"internalType":"bool","name":"ready","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"datas","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"scheduleBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"updateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200219438038062002194833981016040819052620000349162000394565b6200004f6000805160206200213483398151915280620001c9565b620000796000805160206200215483398151915260008051602062002134833981519152620001c9565b620000a36000805160206200217483398151915260008051602062002134833981519152620001c9565b620000be600080516020620021348339815191523362000214565b620000d9600080516020620021348339815191523062000214565b60005b8251811015620001365762000123600080516020620021548339815191528483815181106200010f576200010f62000432565b60200260200101516200021460201b60201c565b6200012e8162000408565b9050620000dc565b5060005b815181101562000180576200016d600080516020620021748339815191528383815181106200010f576200010f62000432565b620001788162000408565b90506200013a565b5060028390556040805160008152602081018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050506200045e565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b62000220828262000224565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000220576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002803390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b0381168114620002dc57600080fd5b919050565b600082601f830112620002f357600080fd5b815160206001600160401b038083111562000312576200031262000448565b8260051b604051601f19603f830116810181811084821117156200033a576200033a62000448565b604052848152838101925086840182880185018910156200035a57600080fd5b600092505b8583101562000388576200037381620002c4565b8452928401926001929092019184016200035f565b50979650505050505050565b600080600060608486031215620003aa57600080fd5b835160208501519093506001600160401b0380821115620003ca57600080fd5b620003d887838801620002e1565b93506040860151915080821115620003ef57600080fd5b50620003fe86828701620002e1565b9150509250925092565b60006000198214156200042b57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b611cc6806200046e6000396000f3fe60806040526004361061018f5760003560e01c806364d62353116100d6578063b1c5f4271161007f578063d547741f11610059578063d547741f146104d6578063e38335e5146104f6578063f27a0c921461050957600080fd5b8063b1c5f42714610469578063c4d252f514610489578063d45c4435146104a957600080fd5b80638f61f4f5116100b05780638f61f4f5146103dc57806391d1485414610410578063a217fddf1461045457600080fd5b806364d623531461037c5780638065657f1461039c5780638f2a0bb0146103bc57600080fd5b8063248a9ca31161013857806331d507501161011257806331d507501461031c57806336568abe1461033c578063584b153e1461035c57600080fd5b8063248a9ca31461029b5780632ab0f529146102cb5780632f2ff15d146102fc57600080fd5b80630d3cf6fc116101695780630d3cf6fc14610234578063134008d31461026857806313bc9f201461027b57600080fd5b806301d5062a1461019b57806301ffc9a7146101bd57806307bd0265146101f257600080fd5b3661019657005b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611667565b61051e565b005b3480156101c957600080fd5b506101dd6101d836600461187c565b6105b4565b60405190151581526020015b60405180910390f35b3480156101fe57600080fd5b506102267fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b6040519081526020016101e9565b34801561024057600080fd5b506102267f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101bb6102763660046115fb565b61064d565b34801561028757600080fd5b506101dd610296366004611837565b610708565b3480156102a757600080fd5b506102266102b6366004611837565b60009081526020819052604090206001015490565b3480156102d757600080fd5b506101dd6102e6366004611837565b6000908152600160208190526040909120541490565b34801561030857600080fd5b506101bb610317366004611850565b61072e565b34801561032857600080fd5b506101dd610337366004611837565b610759565b34801561034857600080fd5b506101bb610357366004611850565b610772565b34801561036857600080fd5b506101dd610377366004611837565b610803565b34801561038857600080fd5b506101bb610397366004611837565b610819565b3480156103a857600080fd5b506102266103b73660046115fb565b6108cf565b3480156103c857600080fd5b506101bb6103d7366004611785565b61090e565b3480156103e857600080fd5b506102267fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561041c57600080fd5b506101dd61042b366004611850565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561046057600080fd5b50610226600081565b34801561047557600080fd5b506102266104843660046116dc565b610ad9565b34801561049557600080fd5b506101bb6104a4366004611837565b610b1e565b3480156104b557600080fd5b506102266104c4366004611837565b60009081526001602052604090205490565b3480156104e257600080fd5b506101bb6104f1366004611850565b610c00565b6101bb6105043660046116dc565b610c26565b34801561051557600080fd5b50600254610226565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105498133610e16565b60006105598989898989896108cf565b90506105658184610e94565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516105a196959493929190611a39565b60405180910390a3505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166106ca576106ca8133610e16565b60006106da8888888888886108cf565b90506106e68185610fa8565b6106f58160008a8a8a8a61109e565b6106fe816111bc565b5050505050505050565b6000818152600160205260408120546001811180156107275750428111155b9392505050565b60008281526020819052604090206001015461074a8133610e16565b6107548383611238565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146107f55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6107ff82826112d6565b5050565b600081815260016020819052604082205461076b565b33301461088e5760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201527f62652074696d656c6f636b00000000000000000000000000000000000000000060648201526084016107ec565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b60008686868686866040516020016108ec96959493929190611a39565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16109398133610e16565b8887146109945760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616044820152620e8c6d60eb1b60648201526084016107ec565b8885146109ef5760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616044820152620e8c6d60eb1b60648201526084016107ec565b6000610a018b8b8b8b8b8b8b8b610ad9565b9050610a0d8184610e94565b60005b8a811015610acb5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a4d57610a4d611c64565b9050602002016020810190610a6291906115e0565b8d8d86818110610a7457610a74611c64565b905060200201358c8c87818110610a8d57610a8d611c64565b9050602002810190610a9f9190611b6e565b8c8b604051610ab396959493929190611a39565b60405180910390a3610ac481611c33565b9050610a10565b505050505050505050505050565b60008888888888888888604051602001610afa989796959493929190611a77565b60405160208183030381529060405280519060200120905098975050505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610b498133610e16565b610b5282610803565b610bc45760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160448201527f6e6e6f742062652063616e63656c6c656400000000000000000000000000000060648201526084016107ec565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c1c8133610e16565b61075483836112d6565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff16610ca357610ca38133610e16565b878614610cfe5760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616044820152620e8c6d60eb1b60648201526084016107ec565b878414610d595760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616044820152620e8c6d60eb1b60648201526084016107ec565b6000610d6b8a8a8a8a8a8a8a8a610ad9565b9050610d778185610fa8565b60005b89811015610e0057610df082828d8d85818110610d9957610d99611c64565b9050602002016020810190610dae91906115e0565b8c8c86818110610dc057610dc0611c64565b905060200201358b8b87818110610dd957610dd9611c64565b9050602002810190610deb9190611b6e565b61109e565b610df981611c33565b9050610d7a565b50610e0a816111bc565b50505050505050505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107ff57610e52816001600160a01b03166014611355565b610e5d836020611355565b604051602001610e6e929190611985565b60408051601f198184030181529082905262461bcd60e51b82526107ec91600401611b3b565b610e9d82610759565b15610f105760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201527f7265616479207363686564756c6564000000000000000000000000000000000060648201526084016107ec565b600254811015610f885760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460448201527f2064656c6179000000000000000000000000000000000000000000000000000060648201526084016107ec565b610f928142611bb5565b6000928352600160205260409092209190915550565b610fb182610708565b6110105760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604482015269206e6f7420726561647960b01b60648201526084016107ec565b80158061102c5750600081815260016020819052604090912054145b6107ff5760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560448201527f6e64656e6379000000000000000000000000000000000000000000000000000060648201526084016107ec565b6000846001600160a01b03168484846040516110bb929190611975565b60006040518083038185875af1925050503d80600081146110f8576040519150601f19603f3d011682016040523d82523d6000602084013e6110fd565b606091505b50509050806111745760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460448201527f72616e73616374696f6e2072657665727465640000000000000000000000000060648201526084016107ec565b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58878787876040516111ab9493929190611a06565b60405180910390a350505050505050565b6111c581610708565b6112245760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604482015269206e6f7420726561647960b01b60648201526084016107ec565b600090815260016020819052604090912055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107ff576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556112923390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16156107ff576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606000611364836002611bcd565b61136f906002611bb5565b67ffffffffffffffff81111561138757611387611c7a565b6040519080825280601f01601f1916602001820160405280156113b1576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106113e8576113e8611c64565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061143357611433611c64565b60200101906001600160f81b031916908160001a9053506000611457846002611bcd565b611462906001611bb5565b90505b60018111156114e7577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106114a3576114a3611c64565b1a60f81b8282815181106114b9576114b9611c64565b60200101906001600160f81b031916908160001a90535060049490941c936114e081611c1c565b9050611465565b5083156107275760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107ec565b80356001600160a01b038116811461154d57600080fd5b919050565b60008083601f84011261156457600080fd5b50813567ffffffffffffffff81111561157c57600080fd5b6020830191508360208260051b850101111561159757600080fd5b9250929050565b60008083601f8401126115b057600080fd5b50813567ffffffffffffffff8111156115c857600080fd5b60208301915083602082850101111561159757600080fd5b6000602082840312156115f257600080fd5b61072782611536565b60008060008060008060a0878903121561161457600080fd5b61161d87611536565b955060208701359450604087013567ffffffffffffffff81111561164057600080fd5b61164c89828a0161159e565b979a9699509760608101359660809091013595509350505050565b600080600080600080600060c0888a03121561168257600080fd5b61168b88611536565b965060208801359550604088013567ffffffffffffffff8111156116ae57600080fd5b6116ba8a828b0161159e565b989b979a50986060810135976080820135975060a09091013595509350505050565b60008060008060008060008060a0898b0312156116f857600080fd5b883567ffffffffffffffff8082111561171057600080fd5b61171c8c838d01611552565b909a50985060208b013591508082111561173557600080fd5b6117418c838d01611552565b909850965060408b013591508082111561175a57600080fd5b506117678b828c01611552565b999c989b509699959896976060870135966080013595509350505050565b600080600080600080600080600060c08a8c0312156117a357600080fd5b893567ffffffffffffffff808211156117bb57600080fd5b6117c78d838e01611552565b909b50995060208c01359150808211156117e057600080fd5b6117ec8d838e01611552565b909950975060408c013591508082111561180557600080fd5b506118128c828d01611552565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60006020828403121561184957600080fd5b5035919050565b6000806040838503121561186357600080fd5b8235915061187360208401611536565b90509250929050565b60006020828403121561188e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461072757600080fd5b818352600060208085019450848460051b86018460005b8781101561193f5783830389528135601e198836030181126118f657600080fd5b8701803567ffffffffffffffff81111561190f57600080fd5b80360389131561191e57600080fd5b61192b858289850161194c565b9a87019a94505050908401906001016118d5565b5090979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8183823760009101908152919050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516119bd816017850160208801611bec565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516119fa816028840160208801611bec565b01602801949350505050565b6001600160a01b0385168152836020820152606060408201526000611a2f60608301848661194c565b9695505050505050565b6001600160a01b038716815285602082015260a060408201526000611a6260a08301868861194c565b60608301949094525060800152949350505050565b60a0808252810188905260008960c08301825b8b811015611ab8576001600160a01b03611aa384611536565b16825260209283019290910190600101611a8a565b5083810360208501528881527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff891115611af157600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611b2281888a6118be565b6060850196909652505050608001529695505050505050565b6020815260008251806020840152611b5a816040850160208701611bec565b601f01601f19169190910160400192915050565b6000808335601e19843603018112611b8557600080fd5b83018035915067ffffffffffffffff821115611ba057600080fd5b60200191503681900382131561159757600080fd5b60008219821115611bc857611bc8611c4e565b500190565b6000816000190483118215151615611be757611be7611c4e565b500290565b60005b83811015611c07578181015183820152602001611bef565b83811115611c16576000848401525b50505050565b600081611c2b57611c2b611c4e565b506000190190565b6000600019821415611c4757611c47611c4e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220e857b030fe2279a747337289699b535075695875c5afd6aa1ef9026e489c930764736f6c634300080500335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c76bb6d6f1802701e758a326558cbf224b683c060000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c76bb6d6f1802701e758a326558cbf224b683c06
Deployed Bytecode
0x60806040526004361061018f5760003560e01c806364d62353116100d6578063b1c5f4271161007f578063d547741f11610059578063d547741f146104d6578063e38335e5146104f6578063f27a0c921461050957600080fd5b8063b1c5f42714610469578063c4d252f514610489578063d45c4435146104a957600080fd5b80638f61f4f5116100b05780638f61f4f5146103dc57806391d1485414610410578063a217fddf1461045457600080fd5b806364d623531461037c5780638065657f1461039c5780638f2a0bb0146103bc57600080fd5b8063248a9ca31161013857806331d507501161011257806331d507501461031c57806336568abe1461033c578063584b153e1461035c57600080fd5b8063248a9ca31461029b5780632ab0f529146102cb5780632f2ff15d146102fc57600080fd5b80630d3cf6fc116101695780630d3cf6fc14610234578063134008d31461026857806313bc9f201461027b57600080fd5b806301d5062a1461019b57806301ffc9a7146101bd57806307bd0265146101f257600080fd5b3661019657005b600080fd5b3480156101a757600080fd5b506101bb6101b6366004611667565b61051e565b005b3480156101c957600080fd5b506101dd6101d836600461187c565b6105b4565b60405190151581526020015b60405180910390f35b3480156101fe57600080fd5b506102267fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b6040519081526020016101e9565b34801561024057600080fd5b506102267f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101bb6102763660046115fb565b61064d565b34801561028757600080fd5b506101dd610296366004611837565b610708565b3480156102a757600080fd5b506102266102b6366004611837565b60009081526020819052604090206001015490565b3480156102d757600080fd5b506101dd6102e6366004611837565b6000908152600160208190526040909120541490565b34801561030857600080fd5b506101bb610317366004611850565b61072e565b34801561032857600080fd5b506101dd610337366004611837565b610759565b34801561034857600080fd5b506101bb610357366004611850565b610772565b34801561036857600080fd5b506101dd610377366004611837565b610803565b34801561038857600080fd5b506101bb610397366004611837565b610819565b3480156103a857600080fd5b506102266103b73660046115fb565b6108cf565b3480156103c857600080fd5b506101bb6103d7366004611785565b61090e565b3480156103e857600080fd5b506102267fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561041c57600080fd5b506101dd61042b366004611850565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561046057600080fd5b50610226600081565b34801561047557600080fd5b506102266104843660046116dc565b610ad9565b34801561049557600080fd5b506101bb6104a4366004611837565b610b1e565b3480156104b557600080fd5b506102266104c4366004611837565b60009081526001602052604090205490565b3480156104e257600080fd5b506101bb6104f1366004611850565b610c00565b6101bb6105043660046116dc565b610c26565b34801561051557600080fd5b50600254610226565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105498133610e16565b60006105598989898989896108cf565b90506105658184610e94565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516105a196959493929190611a39565b60405180910390a3505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff166106ca576106ca8133610e16565b60006106da8888888888886108cf565b90506106e68185610fa8565b6106f58160008a8a8a8a61109e565b6106fe816111bc565b5050505050505050565b6000818152600160205260408120546001811180156107275750428111155b9392505050565b60008281526020819052604090206001015461074a8133610e16565b6107548383611238565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146107f55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6107ff82826112d6565b5050565b600081815260016020819052604082205461076b565b33301461088e5760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201527f62652074696d656c6f636b00000000000000000000000000000000000000000060648201526084016107ec565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b60008686868686866040516020016108ec96959493929190611a39565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16109398133610e16565b8887146109945760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616044820152620e8c6d60eb1b60648201526084016107ec565b8885146109ef5760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616044820152620e8c6d60eb1b60648201526084016107ec565b6000610a018b8b8b8b8b8b8b8b610ad9565b9050610a0d8184610e94565b60005b8a811015610acb5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a4d57610a4d611c64565b9050602002016020810190610a6291906115e0565b8d8d86818110610a7457610a74611c64565b905060200201358c8c87818110610a8d57610a8d611c64565b9050602002810190610a9f9190611b6e565b8c8b604051610ab396959493929190611a39565b60405180910390a3610ac481611c33565b9050610a10565b505050505050505050505050565b60008888888888888888604051602001610afa989796959493929190611a77565b60405160208183030381529060405280519060200120905098975050505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610b498133610e16565b610b5282610803565b610bc45760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160448201527f6e6e6f742062652063616e63656c6c656400000000000000000000000000000060648201526084016107ec565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c1c8133610e16565b61075483836112d6565b600080527fdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d70696020527f5ba6852781629bcdcd4bdaa6de76d786f1c64b16acdac474e55bebc0ea157951547fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e639060ff16610ca357610ca38133610e16565b878614610cfe5760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616044820152620e8c6d60eb1b60648201526084016107ec565b878414610d595760405162461bcd60e51b815260206004820152602360248201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616044820152620e8c6d60eb1b60648201526084016107ec565b6000610d6b8a8a8a8a8a8a8a8a610ad9565b9050610d778185610fa8565b60005b89811015610e0057610df082828d8d85818110610d9957610d99611c64565b9050602002016020810190610dae91906115e0565b8c8c86818110610dc057610dc0611c64565b905060200201358b8b87818110610dd957610dd9611c64565b9050602002810190610deb9190611b6e565b61109e565b610df981611c33565b9050610d7a565b50610e0a816111bc565b50505050505050505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107ff57610e52816001600160a01b03166014611355565b610e5d836020611355565b604051602001610e6e929190611985565b60408051601f198184030181529082905262461bcd60e51b82526107ec91600401611b3b565b610e9d82610759565b15610f105760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201527f7265616479207363686564756c6564000000000000000000000000000000000060648201526084016107ec565b600254811015610f885760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460448201527f2064656c6179000000000000000000000000000000000000000000000000000060648201526084016107ec565b610f928142611bb5565b6000928352600160205260409092209190915550565b610fb182610708565b6110105760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604482015269206e6f7420726561647960b01b60648201526084016107ec565b80158061102c5750600081815260016020819052604090912054145b6107ff5760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560448201527f6e64656e6379000000000000000000000000000000000000000000000000000060648201526084016107ec565b6000846001600160a01b03168484846040516110bb929190611975565b60006040518083038185875af1925050503d80600081146110f8576040519150601f19603f3d011682016040523d82523d6000602084013e6110fd565b606091505b50509050806111745760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460448201527f72616e73616374696f6e2072657665727465640000000000000000000000000060648201526084016107ec565b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58878787876040516111ab9493929190611a06565b60405180910390a350505050505050565b6111c581610708565b6112245760405162461bcd60e51b815260206004820152602a60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604482015269206e6f7420726561647960b01b60648201526084016107ec565b600090815260016020819052604090912055565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107ff576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556112923390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16156107ff576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606000611364836002611bcd565b61136f906002611bb5565b67ffffffffffffffff81111561138757611387611c7a565b6040519080825280601f01601f1916602001820160405280156113b1576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106113e8576113e8611c64565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061143357611433611c64565b60200101906001600160f81b031916908160001a9053506000611457846002611bcd565b611462906001611bb5565b90505b60018111156114e7577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106114a3576114a3611c64565b1a60f81b8282815181106114b9576114b9611c64565b60200101906001600160f81b031916908160001a90535060049490941c936114e081611c1c565b9050611465565b5083156107275760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107ec565b80356001600160a01b038116811461154d57600080fd5b919050565b60008083601f84011261156457600080fd5b50813567ffffffffffffffff81111561157c57600080fd5b6020830191508360208260051b850101111561159757600080fd5b9250929050565b60008083601f8401126115b057600080fd5b50813567ffffffffffffffff8111156115c857600080fd5b60208301915083602082850101111561159757600080fd5b6000602082840312156115f257600080fd5b61072782611536565b60008060008060008060a0878903121561161457600080fd5b61161d87611536565b955060208701359450604087013567ffffffffffffffff81111561164057600080fd5b61164c89828a0161159e565b979a9699509760608101359660809091013595509350505050565b600080600080600080600060c0888a03121561168257600080fd5b61168b88611536565b965060208801359550604088013567ffffffffffffffff8111156116ae57600080fd5b6116ba8a828b0161159e565b989b979a50986060810135976080820135975060a09091013595509350505050565b60008060008060008060008060a0898b0312156116f857600080fd5b883567ffffffffffffffff8082111561171057600080fd5b61171c8c838d01611552565b909a50985060208b013591508082111561173557600080fd5b6117418c838d01611552565b909850965060408b013591508082111561175a57600080fd5b506117678b828c01611552565b999c989b509699959896976060870135966080013595509350505050565b600080600080600080600080600060c08a8c0312156117a357600080fd5b893567ffffffffffffffff808211156117bb57600080fd5b6117c78d838e01611552565b909b50995060208c01359150808211156117e057600080fd5b6117ec8d838e01611552565b909950975060408c013591508082111561180557600080fd5b506118128c828d01611552565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60006020828403121561184957600080fd5b5035919050565b6000806040838503121561186357600080fd5b8235915061187360208401611536565b90509250929050565b60006020828403121561188e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461072757600080fd5b818352600060208085019450848460051b86018460005b8781101561193f5783830389528135601e198836030181126118f657600080fd5b8701803567ffffffffffffffff81111561190f57600080fd5b80360389131561191e57600080fd5b61192b858289850161194c565b9a87019a94505050908401906001016118d5565b5090979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8183823760009101908152919050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516119bd816017850160208801611bec565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516119fa816028840160208801611bec565b01602801949350505050565b6001600160a01b0385168152836020820152606060408201526000611a2f60608301848661194c565b9695505050505050565b6001600160a01b038716815285602082015260a060408201526000611a6260a08301868861194c565b60608301949094525060800152949350505050565b60a0808252810188905260008960c08301825b8b811015611ab8576001600160a01b03611aa384611536565b16825260209283019290910190600101611a8a565b5083810360208501528881527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff891115611af157600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611b2281888a6118be565b6060850196909652505050608001529695505050505050565b6020815260008251806020840152611b5a816040850160208701611bec565b601f01601f19169190910160400192915050565b6000808335601e19843603018112611b8557600080fd5b83018035915067ffffffffffffffff821115611ba057600080fd5b60200191503681900382131561159757600080fd5b60008219821115611bc857611bc8611c4e565b500190565b6000816000190483118215151615611be757611be7611c4e565b500290565b60005b83811015611c07578181015183820152602001611bef565b83811115611c16576000848401525b50505050565b600081611c2b57611c2b611c4e565b506000190190565b6000600019821415611c4757611c47611c4e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220e857b030fe2279a747337289699b535075695875c5afd6aa1ef9026e489c930764736f6c63430008050033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c76bb6d6f1802701e758a326558cbf224b683c060000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c76bb6d6f1802701e758a326558cbf224b683c06
-----Decoded View---------------
Arg [0] : minDelay (uint256): 0
Arg [1] : proposers (address[]): 0xC76BB6d6f1802701E758A326558CBf224b683c06
Arg [2] : executors (address[]): 0xC76BB6d6f1802701E758A326558CBf224b683c06
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 000000000000000000000000c76bb6d6f1802701e758a326558cbf224b683c06
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 000000000000000000000000c76bb6d6f1802701e758a326558cbf224b683c06
Deployed Bytecode Sourcemap
16531:11016:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21990:413;;;;;;;;;;-1:-1:-1;21990:413:0;;;;;:::i;:::-;;:::i;:::-;;10617:204;;;;;;;;;;-1:-1:-1;10617:204:0;;;;;:::i;:::-;;:::i;:::-;;;11716:14:1;;11709:22;11691:41;;11679:2;11664:18;10617:204:0;;;;;;;;16741:66;;;;;;;;;;;;16781:26;16741:66;;;;;11889:25:1;;;11877:2;11862:18;16741:66:0;11844:76:1;16583:78:0;;;;;;;;;;;;16629:32;16583:78;;24398:406;;;;;;:::i;:::-;;:::i;19892:211::-;;;;;;;;;;-1:-1:-1;19892:211:0;;;;;:::i;:::-;;:::i;12044:131::-;;;;;;;;;;-1:-1:-1;12044:131:0;;;;;:::i;:::-;12118:7;12145:12;;;;;;;;;;:22;;;;12044:131;20187:138;;;;;;;;;;-1:-1:-1;20187:138:0;;;;;:::i;:::-;20253:9;20578:15;;;16866:1;20578:15;;;;;;;;;20282:35;;20187:138;12437:147;;;;;;;;;;-1:-1:-1;12437:147:0;;;;;:::i;:::-;;:::i;19455:122::-;;;;;;;;;;-1:-1:-1;19455:122:0;;;;;:::i;:::-;;:::i;13485:218::-;;;;;;;;;;-1:-1:-1;13485:218:0;;;;;:::i;:::-;;:::i;19664:143::-;;;;;;;;;;-1:-1:-1;19664:143:0;;;;;:::i;:::-;;:::i;27304:240::-;;;;;;;;;;-1:-1:-1;27304:240:0;;;;;:::i;:::-;;:::i;21018:292::-;;;;;;;;;;-1:-1:-1;21018:292:0;;;;;:::i;:::-;;:::i;22668:717::-;;;;;;;;;;-1:-1:-1;22668:717:0;;;;;:::i;:::-;;:::i;16668:66::-;;;;;;;;;;;;16708:26;16668:66;;10913:147;;;;;;;;;;-1:-1:-1;10913:147:0;;;;;:::i;:::-;10999:4;11023:12;;;;;;;;;;;-1:-1:-1;;;;;11023:29:0;;;;;;;;;;;;;;;10913:147;10004:49;;;;;;;;;;-1:-1:-1;10004:49:0;10049:4;10004:49;;21432:327;;;;;;;;;;-1:-1:-1;21432:327:0;;;;;:::i;:::-;;:::i;23927:234::-;;;;;;;;;;-1:-1:-1;23927:234:0;;;;;:::i;:::-;;:::i;20478:123::-;;;;;;;;;;-1:-1:-1;20478:123:0;;;;;:::i;:::-;20541:17;20578:15;;;:11;:15;;;;;;;20478:123;12829:149;;;;;;;;;;-1:-1:-1;12829:149:0;;;;;:::i;:::-;;:::i;25075:710::-;;;;;;:::i;:::-;;:::i;20794:105::-;;;;;;;;;;-1:-1:-1;20882:9:0;;20794:105;;21990:413;16708:26;10495:30;16708:26;3886:10;10495;:30::i;:::-;22221:10:::1;22234:53;22248:6;22256:5;22263:4;;22269:11;22282:4;22234:13;:53::i;:::-;22221:66;;22298:20;22308:2;22312:5;22298:9;:20::i;:::-;22352:1;22348:2;22334:61;22355:6;22363:5;22370:4;;22376:11;22389:5;22334:61;;;;;;;;;;;:::i;:::-;;;;;;;;22210:193;21990:413:::0;;;;;;;;:::o;10617:204::-;10702:4;10726:47;;;10741:32;10726:47;;:87;;-1:-1:-1;8003:25:0;7988:40;;;;10777:36;10719:94;10617:204;-1:-1:-1;;10617:204:0:o;24398:406::-;19076:1;11023:29;;:12;;:29;;;16781:26;;11023:29;;19049:89;;19096:30;19107:4;3886:10;10495;:30::i;19096:::-;24622:10:::1;24635:53;24649:6;24657:5;24664:4;;24670:11;24683:4;24635:13;:53::i;:::-;24622:66;;24699:28;24711:2;24715:11;24699;:28::i;:::-;24738:33;24744:2;24748:1;24751:6;24759:5;24766:4;;24738:5;:33::i;:::-;24782:14;24793:2;24782:10;:14::i;:::-;24611:193;24398:406:::0;;;;;;;:::o;19892:211::-;19959:10;20578:15;;;:11;:15;;;;;;16866:1;20036:9;:27;:59;;;;;20080:15;20067:9;:28;;20036:59;20029:66;19892:211;-1:-1:-1;;;19892:211:0:o;12437:147::-;12118:7;12145:12;;;;;;;;;;:22;;;10495:30;10506:4;3886:10;10495;:30::i;:::-;12551:25:::1;12562:4;12568:7;12551:10;:25::i;:::-;12437:147:::0;;;:::o;19455:122::-;19517:12;20578:15;;;:11;:15;;;;;;19517:12;;19549:16;:20;;19455:122;-1:-1:-1;;19455:122:0:o;13485:218::-;-1:-1:-1;;;;;13581:23:0;;3886:10;13581:23;13573:83;;;;-1:-1:-1;;;13573:83:0;;15751:2:1;13573:83:0;;;15733:21:1;15790:2;15770:18;;;15763:30;15829:34;15809:18;;;15802:62;15900:17;15880:18;;;15873:45;15935:19;;13573:83:0;;;;;;;;;13669:26;13681:4;13687:7;13669:11;:26::i;:::-;13485:218;;:::o;19664:143::-;19733:12;20578:15;;;16866:1;20578:15;;;;;;;;19765:16;20478:123;27304:240;27379:10;27401:4;27379:27;27371:83;;;;-1:-1:-1;;;27371:83:0;;15339:2:1;27371:83:0;;;15321:21:1;15378:2;15358:18;;;15351:30;15417:34;15397:18;;;15390:62;15488:13;15468:18;;;15461:41;15519:19;;27371:83:0;15311:233:1;27371:83:0;27485:9;;27470:35;;;16741:25:1;;;16797:2;16782:18;;16775:34;;;27470:35:0;;16714:18:1;27470:35:0;;;;;;;27516:9;:20;27304:240::o;21018:292::-;21209:12;21262:6;21270:5;21277:4;;21283:11;21296:4;21251:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21241:61;;;;;;21234:68;;21018:292;;;;;;;;:::o;22668:717::-;16708:26;10495:30;16708:26;3886:10;10495;:30::i;:::-;22939:31;;::::1;22931:79;;;::::0;-1:-1:-1;;;22931:79:0;;13283:2:1;22931:79:0::1;::::0;::::1;13265:21:1::0;13322:2;13302:18;;;13295:30;13361:34;13341:18;;;13334:62;-1:-1:-1;;;13412:18:1;;;13405:33;13455:19;;22931:79:0::1;13255:225:1::0;22931:79:0::1;23029:30:::0;;::::1;23021:78;;;::::0;-1:-1:-1;;;23021:78:0;;13283:2:1;23021:78:0::1;::::0;::::1;13265:21:1::0;13322:2;13302:18;;;13295:30;13361:34;13341:18;;;13334:62;-1:-1:-1;;;13412:18:1;;;13405:33;13455:19;;23021:78:0::1;13255:225:1::0;23021:78:0::1;23112:10;23125:61;23144:7;;23153:6;;23161:5;;23168:11;23181:4;23125:18;:61::i;:::-;23112:74;;23197:20;23207:2;23211:5;23197:9;:20::i;:::-;23233:9;23228:150;23248:18:::0;;::::1;23228:150;;;23311:1;23307:2;23293:73;23314:7;;23322:1;23314:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23326:6;;23333:1;23326:9;;;;;;;:::i;:::-;;;;;;;23337:5;;23343:1;23337:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;23347:11;23360:5;23293:73;;;;;;;;;;;:::i;:::-;;;;;;;;23268:3;::::0;::::1;:::i;:::-;;;23228:150;;;;22920:465;22668:717:::0;;;;;;;;;;:::o;21432:327::-;21655:12;21708:7;;21717:6;;21725:5;;21732:11;21745:4;21697:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21687:64;;;;;;21680:71;;21432:327;;;;;;;;;;:::o;23927:234::-;16708:26;10495:30;16708:26;3886:10;10495;:30::i;:::-;24013:22:::1;24032:2;24013:18;:22::i;:::-;24005:84;;;::::0;-1:-1:-1;;;24005:84:0;;14921:2:1;24005:84:0::1;::::0;::::1;14903:21:1::0;14960:2;14940:18;;;14933:30;14999:34;14979:18;;;14972:62;15070:19;15050:18;;;15043:47;15107:19;;24005:84:0::1;14893:239:1::0;24005:84:0::1;24107:15;::::0;;;:11:::1;:15;::::0;;;;;24100:22;;;24140:13;24119:2;;24140:13:::1;::::0;::::1;23927:234:::0;;:::o;12829:149::-;12118:7;12145:12;;;;;;;;;;:22;;;10495:30;10506:4;3886:10;10495;:30::i;:::-;12944:26:::1;12956:4;12962:7;12944:11;:26::i;25075:710::-:0;19076:1;11023:29;;:12;;:29;;;16781:26;;11023:29;;19049:89;;19096:30;19107:4;3886:10;10495;:30::i;19096:::-;25339:31;;::::1;25331:79;;;::::0;-1:-1:-1;;;25331:79:0;;13283:2:1;25331:79:0::1;::::0;::::1;13265:21:1::0;13322:2;13302:18;;;13295:30;13361:34;13341:18;;;13334:62;-1:-1:-1;;;13412:18:1;;;13405:33;13455:19;;25331:79:0::1;13255:225:1::0;25331:79:0::1;25429:30:::0;;::::1;25421:78;;;::::0;-1:-1:-1;;;25421:78:0;;13283:2:1;25421:78:0::1;::::0;::::1;13265:21:1::0;13322:2;13302:18;;;13295:30;13361:34;13341:18;;;13334:62;-1:-1:-1;;;13412:18:1;;;13405:33;13455:19;;25421:78:0::1;13255:225:1::0;25421:78:0::1;25512:10;25525:61;25544:7;;25553:6;;25561:5;;25568:11;25581:4;25525:18;:61::i;:::-;25512:74;;25597:28;25609:2;25613:11;25597;:28::i;:::-;25641:9;25636:117;25656:18:::0;;::::1;25636:117;;;25696:45;25702:2;25706:1;25709:7;;25717:1;25709:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25721:6;;25728:1;25721:9;;;;;;;:::i;:::-;;;;;;;25732:5;;25738:1;25732:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;25696:5;:45::i;:::-;25676:3;::::0;::::1;:::i;:::-;;;25636:117;;;;25763:14;25774:2;25763:10;:14::i;:::-;25320:465;25075:710:::0;;;;;;;;;:::o;11350:505::-;10999:4;11023:12;;;;;;;;;;;-1:-1:-1;;;;;11023:29:0;;;;;;;;;;;;11434:414;;11627:41;11655:7;-1:-1:-1;;;;;11627:41:0;11665:2;11627:19;:41::i;:::-;11741:38;11769:4;11776:2;11741:19;:38::i;:::-;11532:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11532:270:0;;;;;;;;;;-1:-1:-1;;;11478:358:0;;;;;;;:::i;23492:285::-;23566:15;23578:2;23566:11;:15::i;:::-;23565:16;23557:76;;;;-1:-1:-1;;;23557:76:0;;14094:2:1;23557:76:0;;;14076:21:1;14133:2;14113:18;;;14106:30;14172:34;14152:18;;;14145:62;14243:17;14223:18;;;14216:45;14278:19;;23557:76:0;14066:237:1;23557:76:0;20882:9;;23652:5;:22;;23644:73;;;;-1:-1:-1;;;23644:73:0;;13687:2:1;23644:73:0;;;13669:21:1;13726:2;13706:18;;;13699:30;13765:34;13745:18;;;13738:62;13836:8;13816:18;;;13809:36;13862:19;;23644:73:0;13659:228:1;23644:73:0;23746:23;23764:5;23746:15;:23;:::i;:::-;23728:15;;;;:11;:15;;;;;;:41;;;;-1:-1:-1;23492:285:0:o;25873:280::-;25959:20;25976:2;25959:16;:20::i;:::-;25951:75;;;;-1:-1:-1;;;25951:75:0;;14510:2:1;25951:75:0;;;14492:21:1;14549:2;14529:18;;;14522:30;14588:34;14568:18;;;14561:62;-1:-1:-1;;;14639:18:1;;;14632:40;14689:19;;25951:75:0;14482:232:1;25951:75:0;26045:25;;;:57;;-1:-1:-1;20253:9:0;20578:15;;;16866:1;20578:15;;;;;;;;;20282:35;26074:28;26037:108;;;;-1:-1:-1;;;26037:108:0;;12876:2:1;26037:108:0;;;12858:21:1;12915:2;12895:18;;;12888:30;12954:34;12934:18;;;12927:62;13025:8;13005:18;;;12998:36;13051:19;;26037:108:0;12848:228:1;26532:367:0;26698:12;26716:6;-1:-1:-1;;;;;26716:11:0;26735:5;26742:4;;26716:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26697:50;;;26766:7;26758:71;;;;-1:-1:-1;;;26758:71:0;;16167:2:1;26758:71:0;;;16149:21:1;16206:2;16186:18;;;16179:30;16245:34;16225:18;;;16218:62;16316:21;16296:18;;;16289:49;16355:19;;26758:71:0;16139:241:1;26758:71:0;26864:5;26860:2;26847:44;26871:6;26879:5;26886:4;;26847:44;;;;;;;;;:::i;:::-;;;;;;;;26686:213;26532:367;;;;;;:::o;26240:178::-;26299:20;26316:2;26299:16;:20::i;:::-;26291:75;;;;-1:-1:-1;;;26291:75:0;;14510:2:1;26291:75:0;;;14492:21:1;14549:2;14529:18;;;14522:30;14588:34;14568:18;;;14561:62;-1:-1:-1;;;14639:18:1;;;14632:40;14689:19;;26291:75:0;14482:232:1;26291:75:0;26377:15;;;;16866:1;26377:15;;;;;;;;:33;26240:178::o;14986:238::-;10999:4;11023:12;;;;;;;;;;;-1:-1:-1;;;;;11023:29:0;;;;;;;;;;;;15065:152;;15109:6;:12;;;;;;;;;;;-1:-1:-1;;;;;15109:29:0;;;;;;;;;:36;;-1:-1:-1;;15109:36:0;15141:4;15109:36;;;15192:12;3886:10;;3806:98;15192:12;-1:-1:-1;;;;;15165:40:0;15183:7;-1:-1:-1;;;;;15165:40:0;15177:4;15165:40;;;;;;;;;;14986:238;;:::o;15356:239::-;10999:4;11023:12;;;;;;;;;;;-1:-1:-1;;;;;11023:29:0;;;;;;;;;;;;15436:152;;;15511:5;15479:12;;;;;;;;;;;-1:-1:-1;;;;;15479:29:0;;;;;;;;;;:37;;-1:-1:-1;;15479:37:0;;;15536:40;3886:10;;15479:12;;15536:40;;15511:5;15536:40;15356:239;;:::o;5671:451::-;5746:13;5772:19;5804:10;5808:6;5804:1;:10;:::i;:::-;:14;;5817:1;5804:14;:::i;:::-;5794:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5794:25:0;;5772:47;;5830:15;:6;5837:1;5830:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5830:15:0;;;;;;;;;5856;:6;5863:1;5856:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5856:15:0;;;;;;;;-1:-1:-1;5887:9:0;5899:10;5903:6;5899:1;:10;:::i;:::-;:14;;5912:1;5899:14;:::i;:::-;5887:26;;5882:135;5919:1;5915;:5;5882:135;;;5954:12;5967:5;5975:3;5967:11;5954:25;;;;;;;:::i;:::-;;;;5942:6;5949:1;5942:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;5942:37:0;;;;;;;;-1:-1:-1;6004:1:0;5994:11;;;;;5922:3;;;:::i;:::-;;;5882:135;;;-1:-1:-1;6035:10:0;;6027:55;;;;-1:-1:-1;;;6027:55:0;;12515:2:1;6027:55:0;;;12497:21:1;;;12534:18;;;12527:30;12593:34;12573:18;;;12566:62;12645:18;;6027:55:0;12487:182:1;14:196;82:20;;-1:-1:-1;;;;;131:54:1;;121:65;;111:2;;200:1;197;190:12;111:2;63:147;;;:::o;215:367::-;278:8;288:6;342:3;335:4;327:6;323:17;319:27;309:2;;360:1;357;350:12;309:2;-1:-1:-1;383:20:1;;426:18;415:30;;412:2;;;458:1;455;448:12;412:2;495:4;487:6;483:17;471:29;;555:3;548:4;538:6;535:1;531:14;523:6;519:27;515:38;512:47;509:2;;;572:1;569;562:12;509:2;299:283;;;;;:::o;587:347::-;638:8;648:6;702:3;695:4;687:6;683:17;679:27;669:2;;720:1;717;710:12;669:2;-1:-1:-1;743:20:1;;786:18;775:30;;772:2;;;818:1;815;808:12;772:2;855:4;847:6;843:17;831:29;;907:3;900:4;891:6;883;879:19;875:30;872:39;869:2;;;924:1;921;914:12;939:186;998:6;1051:2;1039:9;1030:7;1026:23;1022:32;1019:2;;;1067:1;1064;1057:12;1019:2;1090:29;1109:9;1090:29;:::i;1130:689::-;1236:6;1244;1252;1260;1268;1276;1329:3;1317:9;1308:7;1304:23;1300:33;1297:2;;;1346:1;1343;1336:12;1297:2;1369:29;1388:9;1369:29;:::i;:::-;1359:39;;1445:2;1434:9;1430:18;1417:32;1407:42;;1500:2;1489:9;1485:18;1472:32;1527:18;1519:6;1516:30;1513:2;;;1559:1;1556;1549:12;1513:2;1598:58;1648:7;1639:6;1628:9;1624:22;1598:58;:::i;:::-;1287:532;;;;-1:-1:-1;1675:8:1;1757:2;1742:18;;1729:32;;1808:3;1793:19;;;1780:33;;-1:-1:-1;1287:532:1;-1:-1:-1;;;;1287:532:1:o;1824:758::-;1939:6;1947;1955;1963;1971;1979;1987;2040:3;2028:9;2019:7;2015:23;2011:33;2008:2;;;2057:1;2054;2047:12;2008:2;2080:29;2099:9;2080:29;:::i;:::-;2070:39;;2156:2;2145:9;2141:18;2128:32;2118:42;;2211:2;2200:9;2196:18;2183:32;2238:18;2230:6;2227:30;2224:2;;;2270:1;2267;2260:12;2224:2;2309:58;2359:7;2350:6;2339:9;2335:22;2309:58;:::i;:::-;1998:584;;;;-1:-1:-1;2386:8:1;2468:2;2453:18;;2440:32;;2519:3;2504:19;;2491:33;;-1:-1:-1;2571:3:1;2556:19;;;2543:33;;-1:-1:-1;1998:584:1;-1:-1:-1;;;;1998:584:1:o;2587:1237::-;2774:6;2782;2790;2798;2806;2814;2822;2830;2883:3;2871:9;2862:7;2858:23;2854:33;2851:2;;;2900:1;2897;2890:12;2851:2;2940:9;2927:23;2969:18;3010:2;3002:6;2999:14;2996:2;;;3026:1;3023;3016:12;2996:2;3065:70;3127:7;3118:6;3107:9;3103:22;3065:70;:::i;:::-;3154:8;;-1:-1:-1;3039:96:1;-1:-1:-1;3242:2:1;3227:18;;3214:32;;-1:-1:-1;3258:16:1;;;3255:2;;;3287:1;3284;3277:12;3255:2;3326:72;3390:7;3379:8;3368:9;3364:24;3326:72;:::i;:::-;3417:8;;-1:-1:-1;3300:98:1;-1:-1:-1;3505:2:1;3490:18;;3477:32;;-1:-1:-1;3521:16:1;;;3518:2;;;3550:1;3547;3540:12;3518:2;;3589:72;3653:7;3642:8;3631:9;3627:24;3589:72;:::i;:::-;2841:983;;;;-1:-1:-1;2841:983:1;;;;3680:8;;3762:2;3747:18;;3734:32;;3813:3;3798:19;3785:33;;-1:-1:-1;2841:983:1;-1:-1:-1;;;;2841:983:1:o;3829:1306::-;4025:6;4033;4041;4049;4057;4065;4073;4081;4089;4142:3;4130:9;4121:7;4117:23;4113:33;4110:2;;;4159:1;4156;4149:12;4110:2;4199:9;4186:23;4228:18;4269:2;4261:6;4258:14;4255:2;;;4285:1;4282;4275:12;4255:2;4324:70;4386:7;4377:6;4366:9;4362:22;4324:70;:::i;:::-;4413:8;;-1:-1:-1;4298:96:1;-1:-1:-1;4501:2:1;4486:18;;4473:32;;-1:-1:-1;4517:16:1;;;4514:2;;;4546:1;4543;4536:12;4514:2;4585:72;4649:7;4638:8;4627:9;4623:24;4585:72;:::i;:::-;4676:8;;-1:-1:-1;4559:98:1;-1:-1:-1;4764:2:1;4749:18;;4736:32;;-1:-1:-1;4780:16:1;;;4777:2;;;4809:1;4806;4799:12;4777:2;;4848:72;4912:7;4901:8;4890:9;4886:24;4848:72;:::i;:::-;4100:1035;;;;-1:-1:-1;4100:1035:1;;;;4939:8;;5021:2;5006:18;;4993:32;;5072:3;5057:19;;5044:33;;-1:-1:-1;5124:3:1;5109:19;5096:33;;-1:-1:-1;4100:1035:1;-1:-1:-1;;;;4100:1035:1:o;5140:180::-;5199:6;5252:2;5240:9;5231:7;5227:23;5223:32;5220:2;;;5268:1;5265;5258:12;5220:2;-1:-1:-1;5291:23:1;;5210:110;-1:-1:-1;5210:110:1:o;5325:254::-;5393:6;5401;5454:2;5442:9;5433:7;5429:23;5425:32;5422:2;;;5470:1;5467;5460:12;5422:2;5506:9;5493:23;5483:33;;5535:38;5569:2;5558:9;5554:18;5535:38;:::i;:::-;5525:48;;5412:167;;;;;:::o;5584:332::-;5642:6;5695:2;5683:9;5674:7;5670:23;5666:32;5663:2;;;5711:1;5708;5701:12;5663:2;5750:9;5737:23;5800:66;5793:5;5789:78;5782:5;5779:89;5769:2;;5882:1;5879;5872:12;6106:981;6213:6;6208:3;6201:19;6183:3;6239:4;6268:2;6263:3;6259:12;6252:19;;6293:3;6333:6;6330:1;6326:14;6321:3;6317:24;6364:5;6387:1;6397:664;6411:6;6408:1;6405:13;6397:664;;;6482:5;6476:4;6472:16;6467:3;6460:29;6541:6;6528:20;6631:2;6627:7;6619:5;6603:14;6599:26;6595:40;6575:18;6571:65;6561:2;;6650:1;6647;6640:12;6561:2;6682:30;;6741:21;;6791:18;6778:32;;6775:2;;;6823:1;6820;6813:12;6775:2;6874:8;6858:14;6854:29;6847:5;6843:41;6840:2;;;6897:1;6894;6887:12;6840:2;6922:59;6976:4;6966:8;6961:2;6952:7;6948:16;6922:59;:::i;:::-;7039:12;;;;6914:67;-1:-1:-1;;;7004:15:1;;;;6433:1;6426:9;6397:664;;;-1:-1:-1;7077:4:1;;6191:896;-1:-1:-1;;;;;;;6191:896:1:o;7092:266::-;7180:6;7175:3;7168:19;7232:6;7225:5;7218:4;7213:3;7209:14;7196:43;-1:-1:-1;7284:1:1;7259:16;;;7277:4;7255:27;;;7248:38;;;;7340:2;7319:15;;;-1:-1:-1;;7315:29:1;7306:39;;;7302:50;;7158:200::o;7363:271::-;7546:6;7538;7533:3;7520:33;7502:3;7572:16;;7597:13;;;7572:16;7510:124;-1:-1:-1;7510:124:1:o;7639:786::-;8050:25;8045:3;8038:38;8020:3;8105:6;8099:13;8121:62;8176:6;8171:2;8166:3;8162:12;8155:4;8147:6;8143:17;8121:62;:::i;:::-;8247:19;8242:2;8202:16;;;8234:11;;;8227:40;8292:13;;8314:63;8292:13;8363:2;8355:11;;8348:4;8336:17;;8314:63;:::i;:::-;8397:17;8416:2;8393:26;;8028:397;-1:-1:-1;;;;8028:397:1:o;8430:435::-;-1:-1:-1;;;;;8647:6:1;8643:55;8632:9;8625:74;8735:6;8730:2;8719:9;8715:18;8708:34;8778:2;8773;8762:9;8758:18;8751:30;8606:4;8798:61;8855:2;8844:9;8840:18;8832:6;8824;8798:61;:::i;:::-;8790:69;8615:250;-1:-1:-1;;;;;;8615:250:1:o;8870:580::-;-1:-1:-1;;;;;9143:6:1;9139:55;9128:9;9121:74;9231:6;9226:2;9215:9;9211:18;9204:34;9274:3;9269:2;9258:9;9254:18;9247:31;9102:4;9295:62;9352:3;9341:9;9337:19;9329:6;9321;9295:62;:::i;:::-;9388:2;9373:18;;9366:34;;;;-1:-1:-1;9431:3:1;9416:19;9409:35;9287:70;9111:339;-1:-1:-1;;;;9111:339:1:o;10040:1506::-;10492:3;10505:22;;;10477:19;;10562:22;;;10444:4;10642:6;10615:3;10600:19;;10444:4;10676:258;10690:6;10687:1;10684:13;10676:258;;;-1:-1:-1;;;;;10755:26:1;10774:6;10755:26;:::i;:::-;10751:75;10739:88;;10850:4;10909:15;;;;10874:12;;;;10712:1;10705:9;10676:258;;;10680:3;10981:9;10976:3;10972:19;10965:4;10954:9;10950:20;10943:49;11013:6;11008:3;11001:19;11043:66;11035:6;11032:78;11029:2;;;11123:1;11120;11113:12;11029:2;11157:6;11154:1;11150:14;11136:28;;11210:6;11202;11195:4;11190:3;11186:14;11173:44;11245:6;11240:3;11236:16;11226:26;;;11279:4;11275:2;11271:13;11304:1;11300:2;11293:13;11366:4;11354:9;11350:2;11346:18;11342:29;11337:2;11326:9;11322:18;11315:57;11389:64;11450:2;11442:6;11434;11389:64;:::i;:::-;11484:2;11469:18;;11462:34;;;;-1:-1:-1;;;11527:3:1;11512:19;11505:35;11381:72;10453:1093;-1:-1:-1;;;;;;10453:1093:1:o;11925:383::-;12074:2;12063:9;12056:21;12037:4;12106:6;12100:13;12149:6;12144:2;12133:9;12129:18;12122:34;12165:66;12224:6;12219:2;12208:9;12204:18;12199:2;12191:6;12187:15;12165:66;:::i;:::-;12292:2;12271:15;-1:-1:-1;;12267:29:1;12252:45;;;;12299:2;12248:54;;12046:262;-1:-1:-1;;12046:262:1:o;16820:521::-;16897:4;16903:6;16963:11;16950:25;17057:2;17053:7;17042:8;17026:14;17022:29;17018:43;16998:18;16994:68;16984:2;;17076:1;17073;17066:12;16984:2;17103:33;;17155:20;;;-1:-1:-1;17198:18:1;17187:30;;17184:2;;;17230:1;17227;17220:12;17184:2;17263:4;17251:17;;-1:-1:-1;17294:14:1;17290:27;;;17280:38;;17277:2;;;17331:1;17328;17321:12;17346:128;17386:3;17417:1;17413:6;17410:1;17407:13;17404:2;;;17423:18;;:::i;:::-;-1:-1:-1;17459:9:1;;17394:80::o;17479:168::-;17519:7;17585:1;17581;17577:6;17573:14;17570:1;17567:21;17562:1;17555:9;17548:17;17544:45;17541:2;;;17592:18;;:::i;:::-;-1:-1:-1;17632:9:1;;17531:116::o;17652:258::-;17724:1;17734:113;17748:6;17745:1;17742:13;17734:113;;;17824:11;;;17818:18;17805:11;;;17798:39;17770:2;17763:10;17734:113;;;17865:6;17862:1;17859:13;17856:2;;;17900:1;17891:6;17886:3;17882:16;17875:27;17856:2;;17705:205;;;:::o;17915:136::-;17954:3;17982:5;17972:2;;17991:18;;:::i;:::-;-1:-1:-1;;;18027:18:1;;17962:89::o;18056:135::-;18095:3;-1:-1:-1;;18116:17:1;;18113:2;;;18136:18;;:::i;:::-;-1:-1:-1;18183:1:1;18172:13;;18103:88::o;18196:184::-;-1:-1:-1;;;18245:1:1;18238:88;18345:4;18342:1;18335:15;18369:4;18366:1;18359:15;18385:184;-1:-1:-1;;;18434:1:1;18427:88;18534:4;18531:1;18524:15;18558:4;18555:1;18548:15;18574:184;-1:-1:-1;;;18623:1:1;18616:88;18723:4;18720:1;18713:15;18747:4;18744:1;18737:15
Swarm Source
ipfs://e857b030fe2279a747337289699b535075695875c5afd6aa1ef9026e489c9307
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.