{
  "id": "521040a1c98583c782c6a2df56ab78d4",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.17",
  "solcLongVersion": "0.8.17+commit.8df45f5f",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/ethregistrar/TestResolver.sol": {
        "content": "pragma solidity >=0.8.4;\n\n/**\n * @dev A test resolver implementation\n */\ncontract TestResolver {\n    mapping(bytes32 => address) addresses;\n\n    constructor() public {}\n\n    function supportsInterface(bytes4 interfaceID) public pure returns (bool) {\n        return interfaceID == 0x01ffc9a7 || interfaceID == 0x3b3b57de;\n    }\n\n    function addr(bytes32 node) public view returns (address) {\n        return addresses[node];\n    }\n\n    function setAddr(bytes32 node, address addr) public {\n        addresses[node] = addr;\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/ethregistrar/TestResolver.sol": {
        "TestResolver": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                }
              ],
              "name": "addr",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "node",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "addr",
                  "type": "address"
                }
              ],
              "name": "setAddr",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "A test resolver implementation",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_10": {
                  "entryPoint": null,
                  "id": 10,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506102a6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780633b3b57de1461006e578063d5fa2b00146100c9575b600080fd5b6100596100543660046101c5565b61012c565b60405190151581526020015b60405180910390f35b6100a461007c36600461020e565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610065565b61012a6100d7366004610227565b60009182526020829052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b005b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806101bf57507f3b3b57de000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000602082840312156101d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461020757600080fd5b9392505050565b60006020828403121561022057600080fd5b5035919050565b6000806040838503121561023a57600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461026557600080fd5b80915050925092905056fea2646970667358221220545c25a9a58d30f72a0065733144704a72ec5de262499f04e204f64d1b29f4f464736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A6 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x3B3B57DE EQ PUSH2 0x6E JUMPI DUP1 PUSH4 0xD5FA2B00 EQ PUSH2 0xC9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA4 PUSH2 0x7C CALLDATASIZE PUSH1 0x4 PUSH2 0x20E JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x65 JUMP JUMPDEST PUSH2 0x12A PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x227 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0x1BF JUMPI POP PUSH32 0x3B3B57DE00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0x5C 0x25 0xA9 0xA5 DUP14 ADDRESS 0xF7 0x2A STOP PUSH6 0x733144704A72 0xEC 0x5D 0xE2 PUSH3 0x499F04 0xE2 DIV 0xF6 0x4D SHL 0x29 DELEGATECALL DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "73:455:0:-:0;;;145:23;;;;;;;;;;73:455;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@addr_38": {
                  "entryPoint": null,
                  "id": 38,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@setAddr_52": {
                  "entryPoint": null,
                  "id": 52,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_26": {
                  "entryPoint": 300,
                  "id": 26,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 526,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 551,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 453,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1338:1",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:1",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "83:263:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "129:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "138:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "141:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "131:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "131:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "131:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "104:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "113:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "100:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "100:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "125:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "96:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "96:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "93:52:1"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "154:36:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "180:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:23:1"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "158:5:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "309:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "312:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "212:5:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "223:5:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "230:66:1",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "219:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "219:78:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "209:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "209:89:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "202:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "202:97:1"
                              },
                              "nodeType": "YulIf",
                              "src": "199:117:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "325:15:1",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "335:5:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "49:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "60:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "72:6:1",
                            "type": ""
                          }
                        ],
                        "src": "14:332:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:92:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "456:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "468:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "479:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:18:1"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:4:1"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "498:9:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "523:6:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "516:6:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "516:14:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "509:6:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "509:22:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "491:41:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "491:41:1"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "415:9:1",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "426:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "437:4:1",
                            "type": ""
                          }
                        ],
                        "src": "351:187:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "613:110:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "659:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "668:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "671:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "661:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "661:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "661:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "634:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "643:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "630:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "630:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "655:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "626:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "626:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "623:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "684:33:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "707:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "694:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "694:23:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "684:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "579:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "590:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "602:6:1",
                            "type": ""
                          }
                        ],
                        "src": "543:180:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "829:125:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "839:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "851:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "862:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "847:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "847:18:1"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "839:4:1"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "881:9:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "896:6:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "904:42:1",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "892:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "892:55:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "874:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "874:74:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "874:74:1"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "798:9:1",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "809:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "820:4:1",
                            "type": ""
                          }
                        ],
                        "src": "728:226:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1046:290:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1092:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1101:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1104:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1094:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1094:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1094:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1067:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1076:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1063:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1063:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1088:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1059:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1059:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1056:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1117:33:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1140:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1127:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1127:23:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1117:6:1"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1159:45:1",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1189:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1200:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1185:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1185:18:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1172:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1172:32:1"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1163:5:1",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1290:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1299:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1302:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1292:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1292:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1292:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1226:5:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1237:5:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1244:42:1",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1233:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1233:54:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1223:2:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1223:65:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1216:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1216:73:1"
                              },
                              "nodeType": "YulIf",
                              "src": "1213:93:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1315:15:1",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1325:5:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1315:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1004:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1015:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1027:6:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1035:6:1",
                            "type": ""
                          }
                        ],
                        "src": "959:377:1"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value1 := value\n    }\n}",
                  "id": 1,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780633b3b57de1461006e578063d5fa2b00146100c9575b600080fd5b6100596100543660046101c5565b61012c565b60405190151581526020015b60405180910390f35b6100a461007c36600461020e565b60009081526020819052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610065565b61012a6100d7366004610227565b60009182526020829052604090912080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b005b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806101bf57507f3b3b57de000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000602082840312156101d757600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461020757600080fd5b9392505050565b60006020828403121561022057600080fd5b5035919050565b6000806040838503121561023a57600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461026557600080fd5b80915050925092905056fea2646970667358221220545c25a9a58d30f72a0065733144704a72ec5de262499f04e204f64d1b29f4f464736f6c63430008110033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0x3B3B57DE EQ PUSH2 0x6E JUMPI DUP1 PUSH4 0xD5FA2B00 EQ PUSH2 0xC9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x54 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x12C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA4 PUSH2 0x7C CALLDATASIZE PUSH1 0x4 PUSH2 0x20E JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x65 JUMP JUMPDEST PUSH2 0x12A PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x227 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0x1BF JUMPI POP PUSH32 0x3B3B57DE00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0x5C 0x25 0xA9 0xA5 DUP14 ADDRESS 0xF7 0x2A STOP PUSH6 0x733144704A72 0xEC 0x5D 0xE2 PUSH3 0x499F04 0xE2 DIV 0xF6 0x4D SHL 0x29 DELEGATECALL DELEGATECALL PUSH5 0x736F6C6343 STOP ADDMOD GT STOP CALLER ",
              "sourceMap": "73:455:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;174:152;;;;;;:::i;:::-;;:::i;:::-;;;516:14:1;;509:22;491:41;;479:2;464:18;174:152:0;;;;;;;;332:97;;;;;;:::i;:::-;381:7;407:15;;;;;;;;;;;;;;332:97;;;;904:42:1;892:55;;;874:74;;862:2;847:18;332:97:0;728:226:1;435:91:0;;;;;;:::i;:::-;497:9;:15;;;;;;;;;;;:22;;;;;;;;;;;;;;435:91;;;174:152;242:4;265:25;;;;;;:54;;-1:-1:-1;294:25:0;;;;;265:54;258:61;174:152;-1:-1:-1;;174:152:0:o;14:332:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:1:o;543:180::-;602:6;655:2;643:9;634:7;630:23;626:32;623:52;;;671:1;668;661:12;623:52;-1:-1:-1;694:23:1;;543:180;-1:-1:-1;543:180:1:o;959:377::-;1027:6;1035;1088:2;1076:9;1067:7;1063:23;1059:32;1056:52;;;1104:1;1101;1094:12;1056:52;1140:9;1127:23;1117:33;;1200:2;1189:9;1185:18;1172:32;1244:42;1237:5;1233:54;1226:5;1223:65;1213:93;;1302:1;1299;1292:12;1213:93;1325:5;1315:15;;;959:377;;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "135600",
                "executionCost": "183",
                "totalCost": "135783"
              },
              "external": {
                "addr(bytes32)": "2456",
                "setAddr(bytes32,address)": "24607",
                "supportsInterface(bytes4)": "347"
              }
            },
            "methodIdentifiers": {
              "addr(bytes32)": "3b3b57de",
              "setAddr(bytes32,address)": "d5fa2b00",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A test resolver implementation\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ethregistrar/TestResolver.sol\":\"TestResolver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/ethregistrar/TestResolver.sol\":{\"content\":\"pragma solidity >=0.8.4;\\n\\n/**\\n * @dev A test resolver implementation\\n */\\ncontract TestResolver {\\n    mapping(bytes32 => address) addresses;\\n\\n    constructor() public {}\\n\\n    function supportsInterface(bytes4 interfaceID) public pure returns (bool) {\\n        return interfaceID == 0x01ffc9a7 || interfaceID == 0x3b3b57de;\\n    }\\n\\n    function addr(bytes32 node) public view returns (address) {\\n        return addresses[node];\\n    }\\n\\n    function setAddr(bytes32 node, address addr) public {\\n        addresses[node] = addr;\\n    }\\n}\\n\",\"keccak256\":\"0x073294621c22019de2e746bca7fa959ca61a4efc8a0009ca69aee17f079257d7\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 6,
                "contract": "contracts/ethregistrar/TestResolver.sol:TestResolver",
                "label": "addresses",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_bytes32,t_address)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_bytes32,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/ethregistrar/TestResolver.sol\n\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "contracts/ethregistrar/TestResolver.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2519",
        "formattedMessage": "Warning: This declaration shadows an existing declaration.\n  --> contracts/ethregistrar/TestResolver.sol:19:36:\n   |\n19 |     function setAddr(bytes32 node, address addr) public {\n   |                                    ^^^^^^^^^^^^\nNote: The shadowed declaration is here:\n  --> contracts/ethregistrar/TestResolver.sol:15:5:\n   |\n15 |     function addr(bytes32 node) public view returns (address) {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
        "message": "This declaration shadows an existing declaration.",
        "secondarySourceLocations": [
          {
            "end": 429,
            "file": "contracts/ethregistrar/TestResolver.sol",
            "message": "The shadowed declaration is here:",
            "start": 332
          }
        ],
        "severity": "warning",
        "sourceLocation": {
          "end": 478,
          "file": "contracts/ethregistrar/TestResolver.sol",
          "start": 466
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/ethregistrar/TestResolver.sol:9:5:\n  |\n9 |     constructor() public {}\n  |     ^^^^^^^^^^^^^^^^^^^^^^^\n\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 168,
          "file": "contracts/ethregistrar/TestResolver.sol",
          "start": 145
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "contracts/ethregistrar/TestResolver.sol": {
        "ast": {
          "absolutePath": "contracts/ethregistrar/TestResolver.sol",
          "exportedSymbols": {
            "TestResolver": [
              53
            ]
          },
          "id": 54,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:24:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "TestResolver",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2,
                "nodeType": "StructuredDocumentation",
                "src": "26:46:0",
                "text": " @dev A test resolver implementation"
              },
              "fullyImplemented": true,
              "id": 53,
              "linearizedBaseContracts": [
                53
              ],
              "name": "TestResolver",
              "nameLocation": "82:12:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 6,
                  "mutability": "mutable",
                  "name": "addresses",
                  "nameLocation": "129:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 53,
                  "src": "101:37:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                    "typeString": "mapping(bytes32 => address)"
                  },
                  "typeName": {
                    "id": 5,
                    "keyType": {
                      "id": 3,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "109:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "101:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                      "typeString": "mapping(bytes32 => address)"
                    },
                    "valueType": {
                      "id": 4,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "120:7:0",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9,
                    "nodeType": "Block",
                    "src": "166:2:0",
                    "statements": []
                  },
                  "id": 10,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "156:2:0"
                  },
                  "returnParameters": {
                    "id": 8,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "166:0:0"
                  },
                  "scope": 53,
                  "src": "145:23:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 25,
                    "nodeType": "Block",
                    "src": "248:78:0",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 23,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 19,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 17,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12,
                              "src": "265:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30783031666663396137",
                              "id": 18,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "280:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_33540519_by_1",
                                "typeString": "int_const 33540519"
                              },
                              "value": "0x01ffc9a7"
                            },
                            "src": "265:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 22,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 20,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12,
                              "src": "294:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30783362336235376465",
                              "id": 21,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "309:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_993744862_by_1",
                                "typeString": "int_const 993744862"
                              },
                              "value": "0x3b3b57de"
                            },
                            "src": "294:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "265:54:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 16,
                        "id": 24,
                        "nodeType": "Return",
                        "src": "258:61:0"
                      }
                    ]
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 26,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "183:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nameLocation": "208:11:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 26,
                        "src": "201:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 11,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "201:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "200:20:0"
                  },
                  "returnParameters": {
                    "id": 16,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 26,
                        "src": "242:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "242:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "241:6:0"
                  },
                  "scope": 53,
                  "src": "174:152:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 37,
                    "nodeType": "Block",
                    "src": "390:39:0",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 33,
                            "name": "addresses",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6,
                            "src": "407:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 35,
                          "indexExpression": {
                            "id": 34,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "417:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "407:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 32,
                        "id": 36,
                        "nodeType": "Return",
                        "src": "400:22:0"
                      }
                    ]
                  },
                  "functionSelector": "3b3b57de",
                  "id": 38,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addr",
                  "nameLocation": "341:4:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "354:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 38,
                        "src": "346:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 27,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "346:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "345:14:0"
                  },
                  "returnParameters": {
                    "id": 32,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 38,
                        "src": "381:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "381:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "380:9:0"
                  },
                  "scope": 53,
                  "src": "332:97:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 51,
                    "nodeType": "Block",
                    "src": "487:39:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 49,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 45,
                              "name": "addresses",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6,
                              "src": "497:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 47,
                            "indexExpression": {
                              "id": 46,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40,
                              "src": "507:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "497:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 48,
                            "name": "addr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42,
                            "src": "515:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "497:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 50,
                        "nodeType": "ExpressionStatement",
                        "src": "497:22:0"
                      }
                    ]
                  },
                  "functionSelector": "d5fa2b00",
                  "id": 52,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setAddr",
                  "nameLocation": "444:7:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 43,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 40,
                        "mutability": "mutable",
                        "name": "node",
                        "nameLocation": "460:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 52,
                        "src": "452:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 39,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "452:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 42,
                        "mutability": "mutable",
                        "name": "addr",
                        "nameLocation": "474:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 52,
                        "src": "466:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "466:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "451:28:0"
                  },
                  "returnParameters": {
                    "id": 44,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "487:0:0"
                  },
                  "scope": 53,
                  "src": "435:91:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 54,
              "src": "73:455:0",
              "usedErrors": []
            }
          ],
          "src": "0:529:0"
        },
        "id": 0
      }
    }
  }
}
