@etherisc/gif-contracts
Version:
This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.
1,246 lines • 164 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_controller",
"type": "address"
},
{
"internalType": "bytes",
"name": "encoded_initializer",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldImplementation",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newImplemntation",
"type": "address"
}
],
"name": "LogCoreContractUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"allSourcePaths": {
"21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol",
"23": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/StorageSlot.sol",
"5": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/interfaces/draft-IERC1822.sol",
"52": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/shared/ICoreProxy.sol",
"6": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"7": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Upgrade.sol",
"8": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/Proxy.sol",
"89": "contracts/shared/CoreProxy.sol",
"9": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/beacon/IBeacon.sol"
},
"ast": {
"absolutePath": "contracts/shared/CoreProxy.sol",
"exportedSymbols": {
"Address": [
26374
],
"CoreProxy": [
14998
],
"ERC1967Proxy": [
24111
],
"ERC1967Upgrade": [
27521
],
"IBeacon": [
28646
],
"ICoreProxy": [
24120
],
"IERC1822Proxiable": [
28636
],
"Proxy": [
27573
],
"StorageSlot": [
28706
]
},
"id": 14999,
"license": "Apache-2.0",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 14926,
"literals": [
"solidity",
"0.8",
".2"
],
"nodeType": "PragmaDirective",
"src": "39:22:89"
},
{
"absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/shared/ICoreProxy.sol",
"file": "@etherisc/gif-interface/contracts/shared/ICoreProxy.sol",
"id": 14927,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 14999,
"sourceUnit": 24121,
"src": "64:65:89",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol",
"id": 14928,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 14999,
"sourceUnit": 24112,
"src": "130:64:89",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 14929,
"name": "ICoreProxy",
"nodeType": "IdentifierPath",
"referencedDeclaration": 24120,
"src": "223:10:89"
},
"id": 14930,
"nodeType": "InheritanceSpecifier",
"src": "223:10:89"
},
{
"baseName": {
"id": 14931,
"name": "ERC1967Proxy",
"nodeType": "IdentifierPath",
"referencedDeclaration": 24111,
"src": "240:12:89"
},
"id": 14932,
"nodeType": "InheritanceSpecifier",
"src": "240:12:89"
}
],
"contractDependencies": [
24111,
24120,
27521,
27573
],
"contractKind": "contract",
"fullyImplemented": true,
"id": 14998,
"linearizedBaseContracts": [
14998,
24111,
27521,
27573,
24120
],
"name": "CoreProxy",
"nameLocation": "205:9:89",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 14944,
"nodeType": "Block",
"src": "281:114:89",
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 14939,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 14935,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "312:3:89",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 14936,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "312:10:89",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 14937,
"name": "_getAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27381,
"src": "326:9:89",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 14938,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "326:11:89",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "312:25:89",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"hexValue": "4552524f523a4352502d3030313a4e4f545f41444d494e",
"id": 14940,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "351:25:89",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_0040c7b535fe8d83323ecc73a5169249b6133b5d656b3adacba7405479c95dea",
"typeString": "literal_string \"ERROR:CRP-001:NOT_ADMIN\""
},
"value": "ERROR:CRP-001:NOT_ADMIN"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_0040c7b535fe8d83323ecc73a5169249b6133b5d656b3adacba7405479c95dea",
"typeString": "literal_string \"ERROR:CRP-001:NOT_ADMIN\""
}
],
"id": 14934,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "291:7:89",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 14941,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "291:86:89",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 14942,
"nodeType": "ExpressionStatement",
"src": "291:86:89"
},
{
"id": 14943,
"nodeType": "PlaceholderStatement",
"src": "387:1:89"
}
]
},
"id": 14945,
"name": "onlyAdmin",
"nameLocation": "269:9:89",
"nodeType": "ModifierDefinition",
"parameters": {
"id": 14933,
"nodeType": "ParameterList",
"parameters": [],
"src": "278:2:89"
},
"src": "260:135:89",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 14961,
"nodeType": "Block",
"src": "529:41:89",
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"id": 14957,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "552:3:89",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 14958,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "552:10:89",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 14956,
"name": "_changeAdmin",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27424,
"src": "539:12:89",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 14959,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "539:24:89",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 14960,
"nodeType": "ExpressionStatement",
"src": "539:24:89"
}
]
},
"id": 14962,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"id": 14952,
"name": "_controller",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14947,
"src": "490:11:89",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 14953,
"name": "encoded_initializer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14949,
"src": "503:19:89",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"id": 14954,
"modifierName": {
"id": 14951,
"name": "ERC1967Proxy",
"nodeType": "IdentifierPath",
"referencedDeclaration": 24111,
"src": "477:12:89"
},
"nodeType": "ModifierInvocation",
"src": "477:46:89"
}
],
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 14950,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 14947,
"mutability": "mutable",
"name": "_controller",
"nameLocation": "421:11:89",
"nodeType": "VariableDeclaration",
"scope": 14962,
"src": "413:19:89",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 14946,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "413:7:89",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 14949,
"mutability": "mutable",
"name": "encoded_initializer",
"nameLocation": "447:19:89",
"nodeType": "VariableDeclaration",
"scope": 14962,
"src": "434:32:89",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 14948,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "434:5:89",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "412:55:89"
},
"returnParameters": {
"id": 14955,
"nodeType": "ParameterList",
"parameters": [],
"src": "529:0:89"
},
"scope": 14998,
"src": "401:169:89",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 14970,
"nodeType": "Block",
"src": "634:41:89",
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 14967,
"name": "_implementation",
"nodeType": "Identifier",
"overloadedDeclarations": [
24110
],
"referencedDeclaration": 24110,
"src": "651:15:89",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 14968,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "651:17:89",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 14966,
"id": 14969,
"nodeType": "Return",
"src": "644:24:89"
}
]
},
"functionSelector": "5c60da1b",
"id": 14971,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "implementation",
"nameLocation": "585:14:89",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 14963,
"nodeType": "ParameterList",
"parameters": [],
"src": "599:2:89"
},
"returnParameters": {
"id": 14966,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 14965,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 14971,
"src": "625:7:89",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 14964,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "625:7:89",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "624:9:89"
},
"scope": 14998,
"src": "576:99:89",
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 14996,
"nodeType": "Block",
"src": "811:225:89",
"statements": [
{
"assignments": [
14981
],
"declarations": [
{
"constant": false,
"id": 14981,
"mutability": "mutable",
"name": "oldImplementation",
"nameLocation": "829:17:89",
"nodeType": "VariableDeclaration",
"scope": 14996,
"src": "821:25:89",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 14980,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "821:7:89",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 14984,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 14982,
"name": "_implementation",
"nodeType": "Identifier",
"overloadedDeclarations": [
24110
],
"referencedDeclaration": 24110,
"src": "850:15:89",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 14983,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "850:17:89",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "821:46:89"
},
{
"expression": {
"arguments": [
{
"id": 14986,
"name": "newImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14973,
"src": "896:17:89",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 14987,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14975,
"src": "915:4:89",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
{
"hexValue": "74727565",
"id": 14988,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "921:4:89",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 14985,
"name": "_upgradeToAndCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27304,
"src": "878:17:89",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
"typeString": "function (address,bytes memory,bool)"
}
},
"id": 14989,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "878:48:89",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 14990,
"nodeType": "ExpressionStatement",
"src": "878:48:89"
},
{
"eventCall": {
"arguments": [
{
"id": 14992,
"name": "oldImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14981,
"src": "979:17:89",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 14993,
"name": "newImplementation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14973,
"src": "1011:17:89",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 14991,
"name": "LogCoreContractUpgraded",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 24119,
"src": "942:23:89",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
"typeString": "function (address,address)"
}
},
"id": 14994,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "942:87:89",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 14995,
"nodeType": "EmitStatement",
"src": "937:92:89"
}
]
},
"functionSelector": "4f1ef286",
"id": 14997,
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 14978,
"modifierName": {
"id": 14977,
"name": "onlyAdmin",
"nodeType": "IdentifierPath",
"referencedDeclaration": 14945,
"src": "797:9:89"
},
"nodeType": "ModifierInvocation",
"src": "797:9:89"
}
],
"name": "upgradeToAndCall",
"nameLocation": "690:16:89",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 14976,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 14973,
"mutability": "mutable",
"name": "newImplementation",
"nameLocation": "715:17:89",
"nodeType": "VariableDeclaration",
"scope": 14997,
"src": "707:25:89",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 14972,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "707:7:89",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 14975,
"mutability": "mutable",
"name": "data",
"nameLocation": "749:4:89",
"nodeType": "VariableDeclaration",
"scope": 14997,
"src": "734:19:89",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 14974,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "734:5:89",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "706:48:89"
},
"returnParameters": {
"id": 14979,
"nodeType": "ParameterList",
"parameters": [],
"src": "811:0:89"
},
"scope": 14998,
"src": "681:355:89",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
}
],
"scope": 14999,
"src": "196:846:89"
}
],
"src": "39:1004:89"
},
"bytecode": "60806040523480156200001157600080fd5b5060405162000c0c38038062000c0c83398101604081905262000034916200043b565b818162000044828260006200005a565b506200005290503362000097565b5050620005a9565b6200006583620000f2565b600082511180620000735750805b1562000092576200009083836200013460201b620001ae1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000c262000163565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000ef816200019c565b50565b620000fd8162000251565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200015c838360405180606001604052806027815260200162000be56027913962000305565b9392505050565b60006200018d60008051602062000bc583398151915260001b620003eb60201b620001da1760201c565b546001600160a01b0316905090565b6001600160a01b038116620002075760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200023060008051602062000bc583398151915260001b620003eb60201b620001da1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200026781620003ee60201b620001dd1760201c565b620002cb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001fe565b80620002307f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003eb60201b620001da1760201c565b60606001600160a01b0384163b6200036f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001fe565b600080856001600160a01b0316856040516200038c919062000511565b600060405180830381855af49150503d8060008114620003c9576040519150601f19603f3d011682016040523d82523d6000602084013e620003ce565b606091505b509092509050620003e1828286620003fd565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200040e5750816200015c565b8251156200041f5782518084602001fd5b8160405162461bcd60e51b8152600401620001fe91906200052f565b600080604083850312156200044e578182fd5b82516001600160a01b038116811462000465578283fd5b60208401519092506001600160401b038082111562000482578283fd5b818501915085601f83011262000496578283fd5b815181811115620004ab57620004ab62000593565b604051601f8201601f19908116603f01168101908382118183101715620004d657620004d662000593565b81604052828152886020848701011115620004ef578586fd5b6200050283602083016020880162000564565b80955050505050509250929050565b600082516200052581846020870162000564565b9190910192915050565b60006020825282518060208401526200055081604085016020870162000564565b601f01601f19169190910160400192915050565b60005b838110156200058157818101518382015260200162000567565b83811115620000905750506000910152565b634e487b7160e01b600052604160045260246000fd5b61060c80620005b96000396000f3fe60806040526004361061002d5760003560e01c80634f1ef286146100445780635c60da1b146100575761003c565b3661003c5761003a610088565b005b61003a610088565b61003a6100523660046104a9565b61009a565b34801561006357600080fd5b5061006c61019f565b6040516001600160a01b03909116815260200160405180910390f35b6100986100936101ec565b6101f6565b565b6100a261021f565b6001600160a01b0316336001600160a01b0316146101075760405162461bcd60e51b815260206004820152601760248201527f4552524f523a4352502d3030313a4e4f545f41444d494e00000000000000000060448201526064015b60405180910390fd5b60006101116101ec565b90506101568484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610252915050565b604080516001600160a01b038084168252861660208201527faca1087105eb43beb9d5a0283455ab4c7fc8e7412810dca909839c8c2f8be7b5910160405180910390a150505050565b60006101a96101ec565b905090565b60606101d383836040518060600160405280602781526020016105b06027913961027d565b9392505050565b90565b6001600160a01b03163b151590565b60006101a961035a565b3660008037600080366000845af43d6000803e808015610215573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316905090565b61025b83610382565b6000825111806102685750805b1561021a5761027783836101ae565b50505050565b60606001600160a01b0384163b6102e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016100fe565b600080856001600160a01b0316856040516103009190610534565b600060405180830381855af49150503d806000811461033b576040519150601f19603f3d011682016040523d82523d6000602084013e610340565b606091505b50915091506103508282866103c2565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610243565b61038b816103fb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156103d15750816101d3565b8251156103e15782518084602001fd5b8160405162461bcd60e51b81526004016100fe9190610550565b6001600160a01b0381163b6104685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100fe565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000604084860312156104bd578283fd5b83356001600160a01b03811681146104d3578384fd5b9250602084013567ffffffffffffffff808211156104ef578384fd5b818601915086601f830112610502578384fd5b813581811115610510578485fd5b876020828501011115610521578485fd5b6020830194508093505050509250925092565b60008251610546818460208701610583565b9190910192915050565b600060208252825180602084015261056f816040850160208701610583565b601f01601f19169190910160400192915050565b60005b8381101561059e578181015183820152602001610586565b83811115610277575050600091015256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220768cbd30aa8b07e6c6bb5ca576b0197ea947e8b703577e49cb92f0b3ea0decd964736f6c63430008020033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
"bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"compiler": {
"evm_version": "istanbul",
"optimizer": {
"enabled": true,
"runs": 200
},
"version": "0.8.2+commit.661d1103"
},
"contractName": "CoreProxy",
"coverageMap": {
"branches": {
"21": {
"Address.verifyCallResult": {
"22": [
7735,
7742,
false
],
"23": [
7876,
7897,
false
]
}
},
"23": {},
"5": {},
"52": {},
"6": {},
"7": {
"ERC1967Upgrade._upgradeToAndCall": {
"24": [
2364,
2379,
true
],
"25": [
2383,
2392,
false
]
}
},
"8": {},
"89": {
"CoreProxy.upgradeToAndCall": {
"21": [
312,
337,
true
]
}
},
"9": {}
},
"statements": {
"21": {
"Address.functionDelegateCall": {
"6": [
6677,
6761
],
"12": [
7119,
7188
],
"13": [
7276,
7334
]
},
"Address.isContract": {
"7": [
1458,
1488
]
},
"Address.verifyCallResult": {
"17": [
7758,
7775
],
"18": [
8252,
8272
]
}
},
"23": {},
"5": {},
"52": {},
"6": {
"ERC1967Proxy._implementation": {
"8": [
1239,
1281
]
}
},
"7": {
"ERC1967Upgrade._getAdmin": {
"9": [
4171,
4223
]
},
"ERC1967Upgrade._getImplementation": {
"14": [
1373,
1434
]
},
"ERC1967Upgrade._setImplementation": {
"19": [
1605,
1700
],
"20": [
1710,
1784
]
},
"ERC1967Upgrade._upgradeTo": {
"15": [
1963,
2000
],
"16": [
2010,
2042
]
},
"ERC1967Upgrade._upgradeToAndCall": {
"10": [
2321,
2350
],
"11": [
2408,
2461
]
}
},
"8": {
"Proxy.<fallback>": {
"1": [
2675,
2686
]
},
"Proxy.<receive>": {
"0": [
2898,
2909
]
},
"Proxy._fallback": {
"2": [
2397,
2425
]
}
},
"89": {
"CoreProxy.implementation": {
"5": [
644,
668
]
},
"CoreProxy.upgradeToAndCall": {
"3": [
878,
926
],
"4": [
937,
1029
]
}
},
"9": {}
}
},
"dependencies": [
"OpenZeppelin/openzeppelin-contracts@4.7.3/Address",
"OpenZeppelin/openzeppelin-contracts@4.7.3/ERC1967Proxy",
"OpenZeppelin/openzeppelin-contracts@4.7.3/ERC1967Upgrade",
"OpenZeppelin/openzeppelin-contracts@4.7.3/IBeacon",
"etherisc/gif-interface@3b0002a/ICoreProxy",
"OpenZeppelin/openzeppelin-contracts@4.7.3/IERC1822Proxiable",
"OpenZeppelin/openzeppelin-contracts@4.7.3/Proxy",
"OpenZeppelin/openzeppelin-contracts@4.7.3/StorageSlot"
],
"deployedBytecode": "60806040526004361061002d5760003560e01c80634f1ef286146100445780635c60da1b146100575761003c565b3661003c5761003a610088565b005b61003a610088565b61003a6100523660046104a9565b61009a565b34801561006357600080fd5b5061006c61019f565b6040516001600160a01b03909116815260200160405180910390f35b6100986100936101ec565b6101f6565b565b6100a261021f565b6001600160a01b0316336001600160a01b0316146101075760405162461bcd60e51b815260206004820152601760248201527f4552524f523a4352502d3030313a4e4f545f41444d494e00000000000000000060448201526064015b60405180910390fd5b60006101116101ec565b90506101568484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610252915050565b604080516001600160a01b038084168252861660208201527faca1087105eb43beb9d5a0283455ab4c7fc8e7412810dca909839c8c2f8be7b5910160405180910390a150505050565b60006101a96101ec565b905090565b60606101d383836040518060600160405280602781526020016105b06027913961027d565b9392505050565b90565b6001600160a01b03163b151590565b60006101a961035a565b3660008037600080366000845af43d6000803e808015610215573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316905090565b61025b83610382565b6000825111806102685750805b1561021a5761027783836101ae565b50505050565b60606001600160a01b0384163b6102e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016100fe565b600080856001600160a01b0316856040516103009190610534565b600060405180830381855af49150503d806000811461033b576040519150601f19603f3d011682016040523d82523d6000602084013e610340565b606091505b50915091506103508282866103c2565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610243565b61038b816103fb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156103d15750816101d3565b8251156103e15782518084602001fd5b8160405162461bcd60e51b81526004016100fe9190610550565b6001600160a01b0381163b6104685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016100fe565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000604084860312156104bd578283fd5b83356001600160a01b03811681146104d3578384fd5b9250602084013567ffffffffffffffff808211156104ef578384fd5b8186019150