@etherisc/gif-contracts
Version:
This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.
1,326 lines (1,325 loc) • 646 kB
JSON
{
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "release",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "contractName",
"type": "bytes32"
}
],
"name": "LogContractDeregistered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "release",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "contractAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "isNew",
"type": "bool"
}
],
"name": "LogContractRegistered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "release",
"type": "bytes32"
}
],
"name": "LogReleasePrepared",
"type": "event"
},
{
"inputs": [],
"name": "MAX_CONTRACTS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "_contracts",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "_contractsInRelease",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "idx",
"type": "uint256"
}
],
"name": "contractName",
"outputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "contracts",
"outputs": [
{
"internalType": "uint256",
"name": "_numberOfContracts",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "deregister",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_release",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "deregisterInRelease",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "ensureSender",
"outputs": [
{
"internalType": "bool",
"name": "_senderMatches",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "getContract",
"outputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_release",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "getContractInRelease",
"outputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMessage",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getRelease",
"outputs": [
{
"internalType": "bytes32",
"name": "_release",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "registry",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_initialRelease",
"type": "bytes32"
}
],
"name": "initializeRegistry",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_newRelease",
"type": "bytes32"
}
],
"name": "prepareRelease",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_release",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "registerInRelease",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "release",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_message",
"type": "string"
}
],
"name": "setMessage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "startBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_message",
"type": "string"
}
],
"name": "upgradeToV2",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"allSourcePaths": {
"10": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/utils/Initializable.sol",
"21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol",
"22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol",
"27": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol",
"37": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IAccess.sol",
"44": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IRegistry.sol",
"80": "contracts/modules/RegistryController.sol",
"88": "contracts/shared/CoreController.sol",
"98": "contracts/test/TestRegistryControllerUpdated.sol"
},
"ast": {
"absolutePath": "contracts/test/TestRegistryControllerUpdated.sol",
"exportedSymbols": {
"Address": [
26374
],
"Context": [
24074
],
"CoreController": [
14924
],
"EnumerableSet": [
19390
],
"IAccess": [
21938
],
"IRegistry": [
21750
],
"Initializable": [
18432
],
"RegistryController": [
10665
],
"Strings": [
23075
],
"TestRegistryControllerUpdated": [
16931
]
},
"id": 16932,
"license": "Apache-2.0",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 16883,
"literals": [
"solidity",
"0.8",
".2"
],
"nodeType": "PragmaDirective",
"src": "39:22:98"
},
{
"absolutePath": "contracts/modules/RegistryController.sol",
"file": "../modules/RegistryController.sol",
"id": 16884,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 16932,
"sourceUnit": 10666,
"src": "63:43:98",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 16885,
"name": "RegistryController",
"nodeType": "IdentifierPath",
"referencedDeclaration": 10665,
"src": "151:18:98"
},
"id": 16886,
"nodeType": "InheritanceSpecifier",
"src": "151:18:98"
}
],
"contractDependencies": [
10665,
14924,
18432,
21750,
24074
],
"contractKind": "contract",
"fullyImplemented": true,
"id": 16931,
"linearizedBaseContracts": [
16931,
10665,
14924,
18432,
24074,
21750
],
"name": "TestRegistryControllerUpdated",
"nameLocation": "118:29:98",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"id": 16888,
"mutability": "mutable",
"name": "message",
"nameLocation": "184:7:98",
"nodeType": "VariableDeclaration",
"scope": 16931,
"src": "177:14:98",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string"
},
"typeName": {
"id": 16887,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "177:6:98",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 16890,
"mutability": "mutable",
"name": "upgradeV2",
"nameLocation": "202:9:98",
"nodeType": "VariableDeclaration",
"scope": 16931,
"src": "197:14:98",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 16889,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "197:4:98",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"body": {
"id": 16901,
"nodeType": "Block",
"src": "290:23:98",
"statements": [
{
"expression": {
"id": 16899,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 16897,
"name": "message",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16888,
"src": "292:7:98",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 16898,
"name": "_message",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16892,
"src": "302:8:98",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"src": "292:18:98",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"id": 16900,
"nodeType": "ExpressionStatement",
"src": "292:18:98"
}
]
},
"functionSelector": "368b8772",
"id": 16902,
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 16895,
"modifierName": {
"id": 16894,
"name": "onlyInstanceOperator",
"nodeType": "IdentifierPath",
"referencedDeclaration": 14825,
"src": "269:20:98"
},
"nodeType": "ModifierInvocation",
"src": "269:20:98"
}
],
"name": "setMessage",
"nameLocation": "227:10:98",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 16893,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 16892,
"mutability": "mutable",
"name": "_message",
"nameLocation": "252:8:98",
"nodeType": "VariableDeclaration",
"scope": 16902,
"src": "238:22:98",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 16891,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "238:6:98",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "237:24:98"
},
"returnParameters": {
"id": 16896,
"nodeType": "ParameterList",
"parameters": [],
"src": "290:0:98"
},
"scope": 16931,
"src": "218:95:98",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 16909,
"nodeType": "Block",
"src": "376:19:98",
"statements": [
{
"expression": {
"id": 16907,
"name": "message",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16888,
"src": "385:7:98",
"typeDescriptions": {
"typeIdentifier": "t_string_storage",
"typeString": "string storage ref"
}
},
"functionReturnParameters": 16906,
"id": 16908,
"nodeType": "Return",
"src": "378:14:98"
}
]
},
"functionSelector": "ce6d41de",
"id": 16910,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getMessage",
"nameLocation": "327:10:98",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 16903,
"nodeType": "ParameterList",
"parameters": [],
"src": "337:2:98"
},
"returnParameters": {
"id": 16906,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 16905,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 16910,
"src": "361:13:98",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 16904,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "361:6:98",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "360:15:98"
},
"scope": 16931,
"src": "318:77:98",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 16929,
"nodeType": "Block",
"src": "453:130:98",
"statements": [
{
"expression": {
"arguments": [
{
"id": 16917,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "472:10:98",
"subExpression": {
"id": 16916,
"name": "upgradeV2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16890,
"src": "473:9:98",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552524f523a5245432d3130323a555047524144455f4f4e43455f4f4d4c59",
"id": 16918,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "484:33:98",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_584862d2e254607edab8323f691596b09145970a7a655d210eb1f81c78c94e40",
"typeString": "literal_string \"ERROR:REC-102:UPGRADE_ONCE_OMLY\""
},
"value": "ERROR:REC-102:UPGRADE_ONCE_OMLY"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_584862d2e254607edab8323f691596b09145970a7a655d210eb1f81c78c94e40",
"typeString": "literal_string \"ERROR:REC-102:UPGRADE_ONCE_OMLY\""
}
],
"id": 16915,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "464:7:98",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 16919,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "464:54:98",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 16920,
"nodeType": "ExpressionStatement",
"src": "464:54:98"
},
{
"expression": {
"id": 16923,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 16921,
"name": "upgradeV2",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16890,
"src": "528:9:98",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "74727565",
"id": 16922,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "540:4:98",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "528:16:98",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 16924,
"nodeType": "ExpressionStatement",
"src": "528:16:98"
},
{
"expression": {
"arguments": [
{
"id": 16926,
"name": "_message",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16912,
"src": "566:8:98",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 16925,
"name": "setMessage",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16902,
"src": "555:10:98",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory)"
}
},
"id": 16927,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "555:20:98",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 16928,
"nodeType": "ExpressionStatement",
"src": "555:20:98"
}
]
},
"functionSelector": "2b34378a",
"id": 16930,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "upgradeToV2",
"nameLocation": "410:11:98",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 16913,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 16912,
"mutability": "mutable",
"name": "_message",
"nameLocation": "436:8:98",
"nodeType": "VariableDeclaration",
"scope": 16930,
"src": "422:22:98",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 16911,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "422:6:98",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"src": "421:24:98"
},
"returnParameters": {
"id": 16914,
"nodeType": "ParameterList",
"parameters": [],
"src": "453:0:98"
},
"scope": 16931,
"src": "401:182:98",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 16932,
"src": "109:476:98"
}
],
"src": "39:547:98"
},
"bytecode": "608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611aad806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636c0f79b6116100b8578063c4d66de81161007c578063c4d66de81461028f578063ce6d41de146102a2578063d22057a9146102b7578063dc527b08146102ca578063e16c7d98146102dd578063f6b3e7d0146102f057610137565b80636c0f79b61461025057806376b707b71461025857806386d1a69f14610260578063893917ea14610269578063b0ef18a01461027c57610137565b8063368b8772116100ff578063368b8772146101b557806348cd4cb1146101c85780634a941e5e146101d157806356bbc19d1461021d578063699235151461023057610137565b80631d5e73141461013c578063208131541461015157806324042a0a146101645780632b34378a1461017f5780632ca65a7914610192575b600080fd5b61014f61014a3660046117b7565b610303565b005b61014f61015f36600461174f565b6103c4565b61016c606481565b6040519081526020015b60405180910390f35b61014f61018d3660046117ef565b610479565b6101a56101a0366004611704565b6104e2565b6040519015158152602001610176565b61014f6101c33660046117ef565b61050c565b61016c60035481565b6102056101df366004611796565b60046020908152600092835260408084209091529082529020546001600160a01b031681565b6040516001600160a01b039091168152602001610176565b61014f61022b36600461174f565b6105c9565b61016c61023e36600461174f565b60056020526000908152604090205481565b61016c61073c565b60025461016c565b61016c60025481565b61014f61027736600461174f565b61075b565b61020561028a366004611796565b610970565b61014f61029d3660046116cc565b610983565b6102aa610ab9565b60405161017691906118cd565b61014f6102c5366004611767565b610b4b565b61014f6102d8366004611796565b610c00565b6102056102eb36600461174f565b610cb0565b61016c6102fe36600461174f565b610cc4565b6000546201000090046001600160a01b0316632ca65a796103213390565b6040518263ffffffff1660e01b815260040161033d9190611899565b60206040518083038186803b15801561035557600080fd5b505afa158015610369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038d919061172f565b6103b25760405162461bcd60e51b81526004016103a99061196e565b60405180910390fd5b6103bf8360008484610cdf565b505050565b6000546201000090046001600160a01b0316632ca65a796103e23390565b6040518263ffffffff1660e01b81526004016103fe9190611899565b60206040518083038186803b15801561041657600080fd5b505afa15801561042a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044e919061172f565b61046a5760405162461bcd60e51b81526004016103a99061196e565b61047660025482611099565b50565b60085460ff16156104cc5760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a5245432d3130323a555047524144455f4f4e43455f4f4d4c590060448201526064016103a9565b6008805460ff191660011790556104768161050c565b60006104f0600254836112bb565b6001600160a01b0316836001600160a01b031614905092915050565b6000546201000090046001600160a01b0316632ca65a7961052a3390565b6040518263ffffffff1660e01b81526004016105469190611899565b60206040518083038186803b15801561055e57600080fd5b505afa158015610572573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610596919061172f565b6105b25760405162461bcd60e51b81526004016103a99061196e565b80516105c5906007906020840190611633565b5050565b600054610100900460ff16158080156105e95750600054600160ff909116105b8061060a57506105f8306112e1565b15801561060a575060005460ff166001145b6106265760405162461bcd60e51b81526004016103a990611920565b6000805460ff191660011790558015610649576000805461ff0019166101001790555b6000805462010000600160b01b031916306201000002179055600282905561066e3390565b60028054600090815260046020908152604080832076496e7374616e63654f70657261746f725365727669636560481b80855290835281842080546001600160a01b0319166001600160a01b0397909716969096179095559254825260069052206106d8916112f4565b506002546000908152600560205260409020600190554360035580156105c5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b600254600090815260066020526040812061075690611300565b905090565b6000546201000090046001600160a01b0316632ca65a796107793390565b6040518263ffffffff1660e01b81526004016107959190611899565b60206040518083038186803b1580156107ad57600080fd5b505afa1580156107c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e5919061172f565b6108015760405162461bcd60e51b81526004016103a99061196e565b600254600090815260056020526040902054806108605760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a5245432d3030313a454d5054595f52454c45415345000000000060448201526064016103a9565b600082815260056020526040902054156108c85760405162461bcd60e51b815260206004820152602360248201527f4552524f523a5245432d3030323a4e45575f52454c454153455f4e4f545f454d60448201526250545960e81b60648201526084016103a9565b60005b8181101561093a5760025460009081526006602052604081206108ee908361130a565b600254600090815260046020908152604080832084845290915290205490915061092790859060019084906001600160a01b0316610cdf565b506109336001826119b1565b90506108cb565b5060028290556040518281527fbd50692eb75750d216c747528a2dfced5915eab7b4ee40bcf8120d0d035297b490602001610730565b600061097c83836112bb565b9392505050565b600054610100900460ff16158080156109a35750600054600160ff909116105b806109c457506109b2306112e1565b1580156109c4575060005460ff166001145b6109e05760405162461bcd60e51b81526004016103a990611920565b6000805460ff191660011790558015610a03576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b03851602179055610a2d600090565b6541636365737360d01b14610a6f57610a4e6541636365737360d01b611316565b600180546001600160a01b0319166001600160a01b03929092169190911790555b610a776113fe565b80156105c5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610730565b606060078054610ac8906119e0565b80601f0160208091040260200160405190810160405280929190818152602001828054610af4906119e0565b8015610b415780601f10610b1657610100808354040283529160200191610b41565b820191906000526020600020905b815481529060010190602001808311610b2457829003601f168201915b5050505050905090565b6000546201000090046001600160a01b0316632ca65a79610b693390565b6040518263ffffffff1660e01b8152600401610b859190611899565b60206040518083038186803b158015610b9d57600080fd5b505afa158015610bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd5919061172f565b610bf15760405162461bcd60e51b81526004016103a99061196e565b6105c560025460008484610cdf565b6000546201000090046001600160a01b0316632ca65a79610c1e3390565b6040518263ffffffff1660e01b8152600401610c3a9190611899565b60206040518083038186803b158015610c5257600080fd5b505afa158015610c66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8a919061172f565b610ca65760405162461bcd60e51b81526004016103a99061196e565b6105c58282611099565b6000610cbe600254836112bb565b92915050565b6002546000908152600660205260408120610cbe908361130a565b6000848152600660205260408120606490610cf990611300565b10610d505760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5245432d3031303a4d41585f434f4e5452414354535f4c494d496044820152601560fa1b60648201526084016103a9565b600085815260056020526040902054151580610d695750835b610db55760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a5245432d3031313a52454c454153455f554e4b4e4f574e00000060448201526064016103a9565b82610e0c5760405162461bcd60e51b815260206004820152602160248201527f4552524f523a5245432d3031323a434f4e54524143545f4e414d455f454d50546044820152605960f81b60648201526084016103a9565b6000858152600660205260409020610e24908461146b565b1580610e7557508276496e7374616e63654f70657261746f725365727669636560481b148015610e75575060008581526004602090815260408083208684529091529020546001600160a01b031633145b610ecc5760405162461bcd60e51b815260206004820152602260248201527f4552524f523a5245432d3031333a434f4e54524143545f4e414d455f45584953604482015261545360f01b60648201526084016103a9565b6001600160a01b038216610f2e5760405162461bcd60e51b815260206004820152602360248201527f4552524f523a5245432d3031343a434f4e54524143545f414444524553535f5a60448201526245524f60e81b60648201526084016103a9565b60008581526004602090815260408083208684529091529020546001600160a01b0316610f92576000858152600660205260409020610f6d90846112f4565b506000858152600560205260408120805491610f8883611a1b565b9190505550600190505b6000858152600460209081526040808320868452825280832080546001600160a01b0319166001600160a01b03871617905587835260069091529020610fd790611300565b600086815260056020526040902054146110425760405162461bcd60e51b815260206004820152602660248201527f4552524f523a5245432d3031353a434f4e54524143545f4e554d4245525f4d496044820152650a69a82a886960d31b60648201526084016103a9565b60408051868152602081018590526001600160a01b03841681830152821515606082015290517f7c5c4e97e59cbd96c53653dfd3f538e50d7bab44baa352481fdc3fa7f18e30089181900360800190a15050505050565b6000546201000090046001600160a01b0316632ca65a796110b73390565b6040518263ffffffff1660e01b81526004016110d39190611899565b60206040518083038186803b1580156110eb57600080fd5b505afa1580156110ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611123919061172f565b61113f5760405162461bcd60e51b81526004016103a99061196e565b6000828152600660205260409020611157908261146b565b6111a35760405162461bcd60e51b815260206004820152601e60248201527f4552524f523a5245432d3032303a434f4e54524143545f554e4b4e4f574e000060448201526064016103a9565b60008281526006602052604090206111bb9082611483565b5060008281526005602052604081208054600192906111db9084906119c9565b90915550506000828152600460209081526040808320848452825280832080546001600160a01b03191690558483526006909152902061121a90611300565b600083815260056020526040902054146112855760405162461bcd60e51b815260206004820152602660248201527f4552524f523a5245432d3032313a434f4e54524143545f4e554d4245525f4d496044820152650a69a82a886960d31b60648201526084016103a9565b60408051838152602081018390527f095bd8db0f80ec14d4d7e375fb7fb3603144ba5b594106e0410243553f97a1319101610730565b60009182526004602090815260408084209284529190529020546001600160a01b031690565b6001600160a01b0381163b15155b919050565b600061097c838361148f565b6000610cbe825490565b600061097c83836114de565b60008054604051631c2d8fb360e31b815260048101849052620100009091046001600160a01b03169063e16c7d989060240160206040518083038186803b15801561136057600080fd5b505afa158015611374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139891906116e8565b90506001600160a01b0381166112ef5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a4352432d3030343a434f4e54524143545f4e4f545f5245474953604482015264151154915160da1b60648201526084016103a9565b600054610100900460ff166114695760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103a9565b565b6000818152600183016020526040812054151561097c565b600061097c8383611516565b60008181526001830160205260408120546114d657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cbe565b506000610cbe565b600082600001828154811061150357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b6000818152600183016020526040812054801561162957600061153a6001836119c9565b855490915060009061154e906001906119c9565b90508181146115cf57600086600001828154811061157c57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050808760000184815481106115ad57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b85548690806115ee57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cbe565b6000915050610cbe565b82805461163f906119e0565b90600052602060002090601f01602090048101928261166157600085556116a7565b82601f1061167a57805160ff19168380011785556116a7565b828001600101855582156116a7579182015b828111156116a757825182559160200191906001019061168c565b506116b39291506116b7565b5090565b5b808211156116b357600081556001016116b8565b6000602082840312156116dd578081fd5b813561097c81611a62565b6000602082840312156116f9578081fd5b815161097c81611a62565b60008060408385031215611716578081fd5b823561172181611a62565b946020939093013593505050565b600060208284031215611740578081fd5b8151801515811461097c578182fd5b600060208284031215611760578081fd5b5035919050565b60008060408385031215611779578182fd5b82359150602083013561178b81611a62565b809150509250929050565b600080604083850312156117a8578182fd5b50508035926020909101359150565b6000806000606084860312156117cb578081fd5b833592506020840135915060408401356117e481611a62565b809150509250925092565b600060208284031215611800578081fd5b813567ffffffffffffffff80821115611817578283fd5b818401915084601f83011261182a578283fd5b81358181111561183c5761183c611a4c565b604051601f8201601f19908116603f0116810190838211818310171561186457611864611a4c565b8160405282815287602084870101111561187c578586fd5b826020860160208301379182016020019490945295945050505050565b6001600160a01b0391909116815276496e7374616e63654f70657261746f725365727669636560481b602082015260400190565b6000602080835283518082850152825b818110156118f9578581018301518582016040015282016118dd565b8181111561190a5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526023908201527f4552524f523a4352432d3030313a4e4f545f494e5354414e43455f4f504552416040820152622a27a960e91b606082015260800190565b600082198211156119c4576119c4611a36565b500190565b6000828210156119db576119db611a36565b500390565b6002810460018216806119f457607f821691505b60208210811415611a1557634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611a2f57611a2f611a36565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461047657600080fdfea2646970667358221220c956c49d845828696589489d7fdc37b49bb521c0486c0df558f1b17af8ee73ec64736f6c63430008020033",
"bytecodeSha1": "1612f421e9e6ba7cf54917b0cd78ece1164f2919",
"compiler": {
"evm_version": "istanbul",
"optimizer": {
"enabled": true,
"runs": 200
},
"version": "0.8.2+commit.661d1103"
},
"contractName": "TestRegistryControllerUpdated",
"coverageMap": {
"branches": {
"10": {
"CoreController._afterInitialize": {
"77": [
4888,
4901,
true
]
},
"CoreController.initialize": {
"76": [
3209,
3242,
false
]
}
},
"21": {},
"22": {},
"27": {
"EnumerableSet._remove": {
"74": [
2922,
2937,
false
],
"75": [
3404,
3430,
false
]
}
},
"37": {},
"44": {},
"80": {
"RegistryController._deregisterInRelease": {
"88": [
7396,
7459,
true
],
"89": [
7703,
7782,
true
]
},
"RegistryController._registerInRelease": {
"80": [
5619,
5681,
true
],
"81": [
5864,
5897,
true
],
"82": [
5901,
5913,
true
],
"83": [
5965,
5986,
true
],
"84": [
6335,
6377,
false
],
"85": [
6381,
6432,
true
],
"86": [
6503,
6533,
true
],
"87": [
6888,
6967,
true
]
},
"RegistryController.prepareRelease": {
"78": [
4087,
4105,
true
],
"79": [
4168,
4205,
true
]
}
},
"88": {
"Context._msgSender": {
"72": [
564,
627,
true
]
},
"CoreController._getContractAddress": {
"73": [
1724,
1753,
true
]
},
"CoreController.initialize": {
"71": [
1255,
1277,
false
]
}
},
"98": {
"TestRegistryControllerUpdated.upgradeToV2": {
"70": [
472,
482,
true
]
}
}
},
"statements": {
"10": {},
"21": {
"Address.isContract": {
"49": [
1458,
1488
]
}
},
"22": {
"Context._msgSender": {
"1": [
712,
729
]
}
},
"27": {
"EnumerableSet._add": {
"59": [
2234,
2257
],
"60": [
2392,
2432
],
"61": [
2446,
2457
],
"62": [
2488,
2500
]
},
"EnumerableSet._at": {
"63": [
4897,
4922
]
},
"EnumerableSet._contains": {
"56": [
4243,
4274
]
},
"EnumerableSet._length": {
"52": [
4437,
4462
]
},
"EnumerableSet._remove": {
"64": [
3592,
3630
],
"65": [
3704,
3740
],
"66": [
3876,
3893
],
"67": [
3961,
3987
],
"68": [
4002,
4013
],
"69": [
4044,
4056
]
},
"EnumerableSet.add": {
"50": [
5904,
5934
]
},
"EnumerableSet.at": {
"53": [
7088,
7117
]
},
"EnumerableSet.contains": {
"57": [
6415,
6450
]
},
"EnumerableSet.length": {
"51": [
6620,
6646
]
},
"EnumerableSet.remove": {
"58": [
6198,
6231
]
}
},
"37": {},
"44": {},
"80": {
"RegistryController._deregisterInRelease": {
"42": [
7388,
7494
],
"43": [
7505,
7566
],
"44": [
7577,
7611
],
"45": [
7621,
7663
],
"46": [