{
  "contractName": "DNSResolver",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "resource",
          "type": "uint16"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "record",
          "type": "bytes"
        }
      ],
      "name": "DNSRecordChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "name",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint16",
          "name": "resource",
          "type": "uint16"
        }
      ],
      "name": "DNSRecordDeleted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "DNSZoneCleared",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "setDNSRecords",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "name",
          "type": "bytes32"
        },
        {
          "internalType": "uint16",
          "name": "resource",
          "type": "uint16"
        }
      ],
      "name": "dnsRecord",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "name",
          "type": "bytes32"
        }
      ],
      "name": "hasDNSRecords",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "clearDNSZone",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"record\",\"type\":\"bytes\"}],\"name\":\"DNSRecordChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"name\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"DNSRecordDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"DNSZoneCleared\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"clearDNSZone\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"resource\",\"type\":\"uint16\"}],\"name\":\"dnsRecord\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"name\",\"type\":\"bytes32\"}],\"name\":\"hasDNSRecords\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setDNSRecords\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"clearDNSZone(bytes32)\":{\"params\":{\"node\":\"the namehash of the node for which to clear the zone\"}},\"dnsRecord(bytes32,bytes32,uint16)\":{\"params\":{\"name\":\"the keccak-256 hash of the fully-qualified name for which to fetch the record\",\"node\":\"the namehash of the node for which to fetch the record\",\"resource\":\"the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\"},\"return\":\"the DNS record in wire format if present, otherwise empty\"},\"hasDNSRecords(bytes32,bytes32)\":{\"params\":{\"name\":\"the namehash of the node for which to check the records\",\"node\":\"the namehash of the node for which to check the records\"}},\"setDNSRecords(bytes32,bytes)\":{\"params\":{\"data\":\"the DNS wire format records to set\",\"node\":\"the namehash of the node for which to set the records\"}}}},\"userdoc\":{\"methods\":{\"clearDNSZone(bytes32)\":{\"notice\":\"Clear all information for a DNS zone.\"},\"dnsRecord(bytes32,bytes32,uint16)\":{\"notice\":\"Obtain a DNS record.\"},\"hasDNSRecords(bytes32,bytes32)\":{\"notice\":\"Check if a given node has records.\"},\"setDNSRecords(bytes32,bytes)\":{\"notice\":\"Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:    a.example.com IN A 1.2.3.4    a.example.com IN A 5.6.7.8    www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:    a.example.com IN A 1.2.3.4    www.example.com IN CNAME a.example.com.    a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first.\"}}}},\"settings\":{\"compilationTarget\":{\"@ensdomains/resolver/contracts/profiles/DNSResolver.sol\":\"DNSResolver\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@ensdomains/buffer/contracts/Buffer.sol\":{\"keccak256\":\"0x1264adbd06f6e05b04539bb225063a988b7fa90343d068de60cdde6cfb6fa92d\",\"urls\":[\"bzz-raw://9362e5c8306c61ad32144028b5b6c3a90ff868c86e814d26f096a59243598ed2\",\"dweb:/ipfs/QmQPRLNQu1iN6KHKPbhkGvRZnsKgjddjzEza8Q8oJ5FfwH\"]},\"@ensdomains/dnssec-oracle/contracts/BytesUtils.sol\":{\"keccak256\":\"0x4014e689ef4a36cbf7103d88286abd2a7c560c2a7af99a561c33c61bc78be27a\",\"urls\":[\"bzz-raw://65e6c215e270ca999089bafa672420a7ef03e9f511dedf6aa4e68857f7dff0fe\",\"dweb:/ipfs/QmQVArMTrJwx6xH49mUMCrr6Jdq6ym6f4zRPPpk7y1jK6J\"]},\"@ensdomains/dnssec-oracle/contracts/RRUtils.sol\":{\"keccak256\":\"0x5135591043cf38413b19f93d16f189f0f8b50b01b78642fb764635d9790cc7ca\",\"urls\":[\"bzz-raw://22e073044ad4ebc936866bb29f6bb38184a454038d63f7f7d2f63a57603ffc86\",\"dweb:/ipfs/QmUugBcgtVUUafeK1NBN4vcVmPboZLK18Lc5zVXhZ8nuZh\"]},\"@ensdomains/resolver/contracts/ResolverBase.sol\":{\"keccak256\":\"0xfc7d550960829127576d6fc3080513d74ef18a6d7057d0d9262ce071890053e8\",\"urls\":[\"bzz-raw://dc477afd53175b96112bb0e2e25ce85b1f7c0e3fe0da4a2e8539d86712583b00\",\"dweb:/ipfs/QmQdwwHEcNMxTWtkrNpkbxtokwiFDdQ5xwPYcuZPRbJQKp\"]},\"@ensdomains/resolver/contracts/profiles/DNSResolver.sol\":{\"keccak256\":\"0x51534f5ebdcfda403b1a935f256e7f27d16b490e5b023b6e57877973daf9a4d4\",\"urls\":[\"bzz-raw://fb6bb7939b35767e157d6da91e4ab37c0992c11799d4d9dc62f3b28f57fcad4a\",\"dweb:/ipfs/QmXh5BDfqhB7hx72RrM6KWv7Bkj4C8NVyXCcXCrzAMW4uH\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "pragma solidity ^0.5.0;\n\nimport \"../ResolverBase.sol\";\nimport \"@ensdomains/dnssec-oracle/contracts/RRUtils.sol\";\n\ncontract DNSResolver is ResolverBase {\n    using RRUtils for *;\n    using BytesUtils for bytes;\n\n    bytes4 constant private DNS_RECORD_INTERFACE_ID = 0xa8fa5682;\n\n    // DNSRecordChanged is emitted whenever a given node/name/resource's RRSET is updated.\n    event DNSRecordChanged(bytes32 indexed node, bytes name, uint16 resource, bytes record);\n    // DNSRecordDeleted is emitted whenever a given node/name/resource's RRSET is deleted.\n    event DNSRecordDeleted(bytes32 indexed node, bytes name, uint16 resource);\n    // DNSZoneCleared is emitted whenever a given node's zone information is cleared.\n    event DNSZoneCleared(bytes32 indexed node);\n\n    // Version the mapping for each zone.  This allows users who have lost\n    // track of their entries to effectively delete an entire zone by bumping\n    // the version number.\n    // node => version\n    mapping(bytes32=>uint256) private versions;\n\n    // The records themselves.  Stored as binary RRSETs\n    // node => version => name => resource => data\n    mapping(bytes32=>mapping(uint256=>mapping(bytes32=>mapping(uint16=>bytes)))) private records;\n\n    // Count of number of entries for a given name.  Required for DNS resolvers\n    // when resolving wildcards.\n    // node => version => name => number of records\n    mapping(bytes32=>mapping(uint256=>mapping(bytes32=>uint16))) private nameEntriesCount;\n\n    /**\n     * Set one or more DNS records.  Records are supplied in wire-format.\n     * Records with the same node/name/resource must be supplied one after the\n     * other to ensure the data is updated correctly. For example, if the data\n     * was supplied:\n     *     a.example.com IN A 1.2.3.4\n     *     a.example.com IN A 5.6.7.8\n     *     www.example.com IN CNAME a.example.com.\n     * then this would store the two A records for a.example.com correctly as a\n     * single RRSET, however if the data was supplied:\n     *     a.example.com IN A 1.2.3.4\n     *     www.example.com IN CNAME a.example.com.\n     *     a.example.com IN A 5.6.7.8\n     * then this would store the first A record, the CNAME, then the second A\n     * record which would overwrite the first.\n     *\n     * @param node the namehash of the node for which to set the records\n     * @param data the DNS wire format records to set\n     */\n    function setDNSRecords(bytes32 node, bytes calldata data) external authorised(node) {\n        uint16 resource = 0;\n        uint256 offset = 0;\n        bytes memory name;\n        bytes memory value;\n        bytes32 nameHash;\n        // Iterate over the data to add the resource records\n        for (RRUtils.RRIterator memory iter = data.iterateRRs(0); !iter.done(); iter.next()) {\n            if (resource == 0) {\n                resource = iter.dnstype;\n                name = iter.name();\n                nameHash = keccak256(abi.encodePacked(name));\n                value = bytes(iter.rdata());\n            } else {\n                bytes memory newName = iter.name();\n                if (resource != iter.dnstype || !name.equals(newName)) {\n                    setDNSRRSet(node, name, resource, data, offset, iter.offset - offset, value.length == 0);\n                    resource = iter.dnstype;\n                    offset = iter.offset;\n                    name = newName;\n                    nameHash = keccak256(name);\n                    value = bytes(iter.rdata());\n                }\n            }\n        }\n        if (name.length > 0) {\n            setDNSRRSet(node, name, resource, data, offset, data.length - offset, value.length == 0);\n        }\n    }\n\n    /**\n     * Obtain a DNS record.\n     * @param node the namehash of the node for which to fetch the record\n     * @param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n     * @param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n     * @return the DNS record in wire format if present, otherwise empty\n     */\n    function dnsRecord(bytes32 node, bytes32 name, uint16 resource) public view returns (bytes memory) {\n        return records[node][versions[node]][name][resource];\n    }\n\n    /**\n     * Check if a given node has records.\n     * @param node the namehash of the node for which to check the records\n     * @param name the namehash of the node for which to check the records\n     */\n    function hasDNSRecords(bytes32 node, bytes32 name) public view returns (bool) {\n        return (nameEntriesCount[node][versions[node]][name] != 0);\n    }\n\n    /**\n     * Clear all information for a DNS zone.\n     * @param node the namehash of the node for which to clear the zone\n     */\n    function clearDNSZone(bytes32 node) public authorised(node) {\n        versions[node]++;\n        emit DNSZoneCleared(node);\n    }\n\n    function supportsInterface(bytes4 interfaceID) public pure returns(bool) {\n        return interfaceID == DNS_RECORD_INTERFACE_ID || super.supportsInterface(interfaceID);\n    }\n\n    function setDNSRRSet(\n        bytes32 node,\n        bytes memory name,\n        uint16 resource,\n        bytes memory data,\n        uint256 offset,\n        uint256 size,\n        bool deleteRecord) private\n    {\n        uint256 version = versions[node];\n        bytes32 nameHash = keccak256(name);\n        bytes memory rrData = data.substring(offset, size);\n        if (deleteRecord) {\n            if (records[node][version][nameHash][resource].length != 0) {\n                nameEntriesCount[node][version][nameHash]--;\n            }\n            delete(records[node][version][nameHash][resource]);\n            emit DNSRecordDeleted(node, name, resource);\n        } else {\n            if (records[node][version][nameHash][resource].length == 0) {\n                nameEntriesCount[node][version][nameHash]++;\n            }\n            records[node][version][nameHash][resource] = rrData;\n            emit DNSRecordChanged(node, name, resource, rrData);\n        }\n    }\n}\n",
  "sourcePath": "@ensdomains/resolver/contracts/profiles/DNSResolver.sol",
  "ast": {
    "absolutePath": "@ensdomains/resolver/contracts/profiles/DNSResolver.sol",
    "exportedSymbols": {
      "DNSResolver": [
        10350
      ]
    },
    "id": 10351,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9921,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:37"
      },
      {
        "absolutePath": "@ensdomains/resolver/contracts/ResolverBase.sol",
        "file": "../ResolverBase.sol",
        "id": 9922,
        "nodeType": "ImportDirective",
        "scope": 10351,
        "sourceUnit": 9555,
        "src": "25:29:37",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
        "file": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
        "id": 9923,
        "nodeType": "ImportDirective",
        "scope": 10351,
        "sourceUnit": 6427,
        "src": "55:57:37",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9924,
              "name": "ResolverBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9554,
              "src": "138:12:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ResolverBase_$9554",
                "typeString": "contract ResolverBase"
              }
            },
            "id": 9925,
            "nodeType": "InheritanceSpecifier",
            "src": "138:12:37"
          }
        ],
        "contractDependencies": [
          9554
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 10350,
        "linearizedBaseContracts": [
          10350,
          9554
        ],
        "name": "DNSResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9927,
            "libraryName": {
              "contractScope": null,
              "id": 9926,
              "name": "RRUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6426,
              "src": "163:7:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RRUtils_$6426",
                "typeString": "library RRUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "157:20:37",
            "typeName": null
          },
          {
            "id": 9930,
            "libraryName": {
              "contractScope": null,
              "id": 9928,
              "name": "BytesUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5805,
              "src": "188:10:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesUtils_$5805",
                "typeString": "library BytesUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "182:27:37",
            "typeName": {
              "id": 9929,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "203:5:37",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 9933,
            "name": "DNS_RECORD_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 10350,
            "src": "215:60:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9931,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "215:6:37",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786138666135363832",
              "id": 9932,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "265:10:37",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2834978434_by_1",
                "typeString": "int_const 2834978434"
              },
              "value": "0xa8fa5682"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9943,
            "name": "DNSRecordChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9935,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "396:20:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9934,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "396:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9937,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "418:10:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9936,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "418:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9939,
                  "indexed": false,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "430:15:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 9938,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "430:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9941,
                  "indexed": false,
                  "name": "record",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "447:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9940,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "447:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "395:65:37"
            },
            "src": "373:88:37"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9951,
            "name": "DNSRecordDeleted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9945,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9951,
                  "src": "580:20:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9944,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "580:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9947,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 9951,
                  "src": "602:10:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9946,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "602:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9949,
                  "indexed": false,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 9951,
                  "src": "614:15:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 9948,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "614:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "579:51:37"
            },
            "src": "557:74:37"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9955,
            "name": "DNSZoneCleared",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9953,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9955,
                  "src": "743:20:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9952,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "743:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "742:22:37"
            },
            "src": "722:43:37"
          },
          {
            "constant": false,
            "id": 9959,
            "name": "versions",
            "nodeType": "VariableDeclaration",
            "scope": 10350,
            "src": "974:42:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 9958,
              "keyType": {
                "id": 9956,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "982:7:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "974:25:37",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 9957,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "991:7:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 9969,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 10350,
            "src": "1130:92:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"
            },
            "typeName": {
              "id": 9968,
              "keyType": {
                "id": 9960,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1138:7:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1130:76:37",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"
              },
              "valueType": {
                "id": 9967,
                "keyType": {
                  "id": 9961,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1155:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1147:58:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                  "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"
                },
                "valueType": {
                  "id": 9966,
                  "keyType": {
                    "id": 9962,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1172:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1164:40:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes))"
                  },
                  "valueType": {
                    "id": 9965,
                    "keyType": {
                      "id": 9963,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1189:6:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1181:22:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                      "typeString": "mapping(uint16 => bytes)"
                    },
                    "valueType": {
                      "id": 9964,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "1197:5:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  }
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 9977,
            "name": "nameEntriesCount",
            "nodeType": "VariableDeclaration",
            "scope": 10350,
            "src": "1394:85:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
            },
            "typeName": {
              "id": 9976,
              "keyType": {
                "id": 9970,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1402:7:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1394:60:37",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
              },
              "valueType": {
                "id": 9975,
                "keyType": {
                  "id": 9971,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1419:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1411:42:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                  "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                },
                "valueType": {
                  "id": 9974,
                  "keyType": {
                    "id": 9972,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1436:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1428:24:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                    "typeString": "mapping(bytes32 => uint16)"
                  },
                  "valueType": {
                    "id": 9973,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "1445:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  }
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 10141,
              "nodeType": "Block",
              "src": "2487:1179:37",
              "statements": [
                {
                  "assignments": [
                    9988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9988,
                      "name": "resource",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2497:15:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 9987,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "2497:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9990,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 9989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2515:1:37",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2497:19:37"
                },
                {
                  "assignments": [
                    9992
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9992,
                      "name": "offset",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2526:14:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9991,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2526:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9994,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 9993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2543:1:37",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2526:18:37"
                },
                {
                  "assignments": [
                    9996
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9996,
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2554:17:37",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9995,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2554:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9997,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2554:17:37"
                },
                {
                  "assignments": [
                    9999
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9999,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2581:18:37",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9998,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2581:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10000,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2581:18:37"
                },
                {
                  "assignments": [
                    10002
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10002,
                      "name": "nameHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2609:16:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 10001,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2609:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10003,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2609:16:37"
                },
                {
                  "body": {
                    "id": 10117,
                    "nodeType": "Block",
                    "src": "2781:736:37",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 10023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10021,
                            "name": "resource",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9988,
                            "src": "2799:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2811:1:37",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2799:13:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10115,
                          "nodeType": "Block",
                          "src": "3019:488:37",
                          "statements": [
                            {
                              "assignments": [
                                10054
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10054,
                                  "name": "newName",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10115,
                                  "src": "3037:20:37",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 10053,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3037:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10058,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10055,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10007,
                                    "src": "3060:4:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 10056,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "name",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6111,
                                  "src": "3060:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                                    "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 10057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3060:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3037:34:37"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 10068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "id": 10062,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 10059,
                                    "name": "resource",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9988,
                                    "src": "3093:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10060,
                                      "name": "iter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10007,
                                      "src": "3105:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 10061,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "dnstype",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5938,
                                    "src": "3105:12:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "src": "3093:24:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 10067,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "3121:21:37",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 10065,
                                        "name": "newName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10054,
                                        "src": "3134:7:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10063,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9996,
                                        "src": "3122:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 10064,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "equals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 5375,
                                      "src": "3122:11:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                                      }
                                    },
                                    "id": 10066,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3122:20:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "3093:49:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 10114,
                              "nodeType": "IfStatement",
                              "src": "3089:404:37",
                              "trueBody": {
                                "id": 10113,
                                "nodeType": "Block",
                                "src": "3144:349:37",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10070,
                                          "name": "node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9979,
                                          "src": "3178:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 10071,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9996,
                                          "src": "3184:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 10072,
                                          "name": "resource",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9988,
                                          "src": "3190:8:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 10073,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9981,
                                          "src": "3200:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 10074,
                                          "name": "offset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9992,
                                          "src": "3206:6:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 10078,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10075,
                                              "name": "iter",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10007,
                                              "src": "3214:4:37",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                                "typeString": "struct RRUtils.RRIterator memory"
                                              }
                                            },
                                            "id": 10076,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "offset",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5936,
                                            "src": "3214:11:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 10077,
                                            "name": "offset",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9992,
                                            "src": "3228:6:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "3214:20:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 10082,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10079,
                                              "name": "value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9999,
                                              "src": "3236:5:37",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 10080,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "3236:12:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 10081,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3252:1:37",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "3236:17:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 10069,
                                        "name": "setDNSRRSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10349,
                                        "src": "3166:11:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)"
                                        }
                                      },
                                      "id": 10083,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3166:88:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 10084,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3166:88:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10088,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10085,
                                        "name": "resource",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9988,
                                        "src": "3276:8:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10086,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10007,
                                          "src": "3287:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 10087,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "dnstype",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5938,
                                        "src": "3287:12:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "3276:23:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 10089,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3276:23:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10093,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10090,
                                        "name": "offset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9992,
                                        "src": "3321:6:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10091,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10007,
                                          "src": "3330:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 10092,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "offset",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5936,
                                        "src": "3330:11:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3321:20:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 10094,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3321:20:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10097,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10095,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9996,
                                        "src": "3363:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 10096,
                                        "name": "newName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10054,
                                        "src": "3370:7:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "3363:14:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 10098,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3363:14:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10103,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10099,
                                        "name": "nameHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10002,
                                        "src": "3399:8:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 10101,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9996,
                                            "src": "3420:4:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 10100,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13004,
                                          "src": "3410:9:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 10102,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3410:15:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "3399:26:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 10104,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3399:26:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10111,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10105,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9999,
                                        "src": "3447:5:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 10107,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10007,
                                                "src": "3461:4:37",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 10108,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rdata",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6131,
                                              "src": "3461:10:37",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 10109,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3461:12:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 10106,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3455:5:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": "bytes"
                                        },
                                        "id": 10110,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3455:19:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "3447:27:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 10112,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3447:27:37"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 10116,
                        "nodeType": "IfStatement",
                        "src": "2795:712:37",
                        "trueBody": {
                          "id": 10052,
                          "nodeType": "Block",
                          "src": "2814:199:37",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10024,
                                  "name": "resource",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9988,
                                  "src": "2832:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10025,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10007,
                                    "src": "2843:4:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 10026,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "dnstype",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5938,
                                  "src": "2843:12:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "2832:23:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 10028,
                              "nodeType": "ExpressionStatement",
                              "src": "2832:23:37"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10029,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9996,
                                  "src": "2873:4:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10030,
                                      "name": "iter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10007,
                                      "src": "2880:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 10031,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "name",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6111,
                                    "src": "2880:9:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                                      "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10032,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2880:11:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "2873:18:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 10034,
                              "nodeType": "ExpressionStatement",
                              "src": "2873:18:37"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10035,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10002,
                                  "src": "2909:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10039,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9996,
                                          "src": "2947:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10037,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12997,
                                          "src": "2930:3:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 10038,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "2930:16:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 10040,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2930:22:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 10036,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13004,
                                    "src": "2920:9:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 10041,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2920:33:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2909:44:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 10043,
                              "nodeType": "ExpressionStatement",
                              "src": "2909:44:37"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10044,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9999,
                                  "src": "2971:5:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10046,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10007,
                                          "src": "2985:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 10047,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rdata",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6131,
                                        "src": "2985:10:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                                          "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 10048,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2985:12:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 10045,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2979:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": "bytes"
                                  },
                                  "id": 10049,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2979:19:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "2971:27:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 10051,
                              "nodeType": "ExpressionStatement",
                              "src": "2971:27:37"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "id": 10016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "2754:12:37",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10013,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10007,
                          "src": "2755:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 10014,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "done",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5988,
                        "src": "2755:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                          "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                        }
                      },
                      "id": 10015,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2755:11:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10118,
                  "initializationExpression": {
                    "assignments": [
                      10007
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10007,
                        "name": "iter",
                        "nodeType": "VariableDeclaration",
                        "scope": 10118,
                        "src": "2701:30:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 10006,
                          "name": "RRUtils.RRIterator",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5947,
                          "src": "2701:18:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$5947_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10012,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2750:1:37",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10008,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9981,
                          "src": "2734:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "id": 10009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "iterateRRs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5973,
                        "src": "2734:15:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$5947_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                        }
                      },
                      "id": 10011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2734:18:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                        "typeString": "struct RRUtils.RRIterator memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2701:51:37"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10017,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10007,
                          "src": "2768:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 10018,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "next",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6090,
                        "src": "2768:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                          "typeString": "function (struct RRUtils.RRIterator memory) pure"
                        }
                      },
                      "id": 10019,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2768:11:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 10020,
                    "nodeType": "ExpressionStatement",
                    "src": "2768:11:37"
                  },
                  "nodeType": "ForStatement",
                  "src": "2696:821:37"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10119,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9996,
                        "src": "3530:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 10120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3530:11:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10121,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3544:1:37",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3530:15:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10140,
                  "nodeType": "IfStatement",
                  "src": "3526:134:37",
                  "trueBody": {
                    "id": 10139,
                    "nodeType": "Block",
                    "src": "3547:113:37",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10124,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9979,
                              "src": "3573:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10125,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9996,
                              "src": "3579:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10126,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9988,
                              "src": "3585:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10127,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9981,
                              "src": "3595:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10128,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9992,
                              "src": "3601:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10129,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9981,
                                  "src": "3609:4:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                "id": 10130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3609:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 10131,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9992,
                                "src": "3623:6:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3609:20:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10133,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9999,
                                  "src": "3631:5:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 10134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3631:12:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3647:1:37",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3631:17:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 10123,
                            "name": "setDNSRRSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10349,
                            "src": "3561:11:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)"
                            }
                          },
                          "id": 10137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3561:88:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10138,
                        "nodeType": "ExpressionStatement",
                        "src": "3561:88:37"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "Set one or more DNS records.  Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n    a.example.com IN A 1.2.3.4\n    a.example.com IN A 5.6.7.8\n    www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n    a.example.com IN A 1.2.3.4\n    www.example.com IN CNAME a.example.com.\n    a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n     * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set",
            "id": 10142,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9984,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9979,
                    "src": "2481:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9985,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9983,
                  "name": "authorised",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9521,
                  "src": "2470:10:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2470:16:37"
              }
            ],
            "name": "setDNSRecords",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9979,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10142,
                  "src": "2426:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9978,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9981,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 10142,
                  "src": "2440:19:37",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9980,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2440:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:35:37"
            },
            "returnParameters": {
              "id": 9986,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2487:0:37"
            },
            "scope": 10350,
            "src": "2403:1263:37",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10165,
              "nodeType": "Block",
              "src": "4167:69:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10153,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9969,
                            "src": "4184:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                            }
                          },
                          "id": 10155,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10154,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10144,
                            "src": "4192:4:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4184:13:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                            "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                          }
                        },
                        "id": 10159,
                        "indexExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10156,
                            "name": "versions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9959,
                            "src": "4198:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 10158,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10157,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10144,
                            "src": "4207:4:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4198:14:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4184:29:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                          "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                        }
                      },
                      "id": 10161,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10160,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10146,
                        "src": "4214:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4184:35:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                        "typeString": "mapping(uint16 => bytes storage ref)"
                      }
                    },
                    "id": 10163,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10162,
                      "name": "resource",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10148,
                      "src": "4220:8:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4184:45:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 10152,
                  "id": 10164,
                  "nodeType": "Return",
                  "src": "4177:52:37"
                }
              ]
            },
            "documentation": "Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty",
            "id": 10166,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "dnsRecord",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10144,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10166,
                  "src": "4087:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10143,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4087:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10146,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 10166,
                  "src": "4101:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10145,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4101:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10148,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 10166,
                  "src": "4115:15:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 10147,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4115:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4086:45:37"
            },
            "returnParameters": {
              "id": 10152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10151,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10166,
                  "src": "4153:12:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10150,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4153:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4152:14:37"
            },
            "scope": 10350,
            "src": "4068:168:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10188,
              "nodeType": "Block",
              "src": "4528:75:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "id": 10185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10175,
                                "name": "nameEntriesCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9977,
                                "src": "4546:16:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                }
                              },
                              "id": 10177,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10176,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10168,
                                "src": "4563:4:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4546:22:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                              }
                            },
                            "id": 10181,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10178,
                                "name": "versions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9959,
                                "src": "4569:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                  "typeString": "mapping(bytes32 => uint256)"
                                }
                              },
                              "id": 10180,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10179,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10168,
                                "src": "4578:4:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4569:14:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4546:38:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                              "typeString": "mapping(bytes32 => uint16)"
                            }
                          },
                          "id": 10183,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10182,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10170,
                            "src": "4585:4:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4546:44:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4594:1:37",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4546:49:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 10186,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4545:51:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10174,
                  "id": 10187,
                  "nodeType": "Return",
                  "src": "4538:58:37"
                }
              ]
            },
            "documentation": "Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records",
            "id": 10189,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasDNSRecords",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10171,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10168,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10189,
                  "src": "4473:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10167,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4473:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10170,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 10189,
                  "src": "4487:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10169,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4487:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4472:28:37"
            },
            "returnParameters": {
              "id": 10174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10173,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10189,
                  "src": "4522:4:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10172,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4522:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4521:6:37"
            },
            "scope": 10350,
            "src": "4450:153:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10206,
              "nodeType": "Block",
              "src": "4802:68:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "4812:16:37",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10197,
                        "name": "versions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9959,
                        "src": "4812:8:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 10199,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10198,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10191,
                        "src": "4821:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4812:14:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10201,
                  "nodeType": "ExpressionStatement",
                  "src": "4812:16:37"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10203,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10191,
                        "src": "4858:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10202,
                      "name": "DNSZoneCleared",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9955,
                      "src": "4843:14:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 10204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4843:20:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10205,
                  "nodeType": "EmitStatement",
                  "src": "4838:25:37"
                }
              ]
            },
            "documentation": "Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone",
            "id": 10207,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10194,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10191,
                    "src": "4796:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 10195,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10193,
                  "name": "authorised",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9521,
                  "src": "4785:10:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4785:16:37"
              }
            ],
            "name": "clearDNSZone",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10191,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10207,
                  "src": "4764:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10190,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4764:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4763:14:37"
            },
            "returnParameters": {
              "id": 10196,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4802:0:37"
            },
            "scope": 10350,
            "src": "4742:128:37",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10223,
              "nodeType": "Block",
              "src": "4949:102:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 10216,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 10214,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10209,
                        "src": "4966:11:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 10215,
                        "name": "DNS_RECORD_INTERFACE_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9933,
                        "src": "4981:23:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "4966:38:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10219,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10209,
                          "src": "5032:11:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10217,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13113,
                          "src": "5008:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_DNSResolver_$10350",
                            "typeString": "contract super DNSResolver"
                          }
                        },
                        "id": 10218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9502,
                        "src": "5008:23:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) pure returns (bool)"
                        }
                      },
                      "id": 10220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5008:36:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4966:78:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10213,
                  "id": 10222,
                  "nodeType": "Return",
                  "src": "4959:85:37"
                }
              ]
            },
            "documentation": null,
            "id": 10224,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10209,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 10224,
                  "src": "4903:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 10208,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "4903:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4902:20:37"
            },
            "returnParameters": {
              "id": 10213,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10212,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10224,
                  "src": "4943:4:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10211,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4943:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4942:6:37"
            },
            "scope": 10350,
            "src": "4876:175:37",
            "stateMutability": "pure",
            "superFunction": 9502,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10348,
              "nodeType": "Block",
              "src": "5265:757:37",
              "statements": [
                {
                  "assignments": [
                    10242
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10242,
                      "name": "version",
                      "nodeType": "VariableDeclaration",
                      "scope": 10348,
                      "src": "5275:15:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10241,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5275:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10246,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 10243,
                      "name": "versions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9959,
                      "src": "5293:8:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 10245,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10244,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10226,
                      "src": "5302:4:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5293:14:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5275:32:37"
                },
                {
                  "assignments": [
                    10248
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10248,
                      "name": "nameHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 10348,
                      "src": "5317:16:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 10247,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5317:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10252,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10250,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10228,
                        "src": "5346:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 10249,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13004,
                      "src": "5336:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 10251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5336:15:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5317:34:37"
                },
                {
                  "assignments": [
                    10254
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10254,
                      "name": "rrData",
                      "nodeType": "VariableDeclaration",
                      "scope": 10348,
                      "src": "5361:19:37",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 10253,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5361:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10260,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10257,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10234,
                        "src": "5398:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10258,
                        "name": "size",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10236,
                        "src": "5406:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10255,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10232,
                        "src": "5383:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 10256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "substring",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5582,
                      "src": "5383:14:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 10259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5383:28:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5361:50:37"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10261,
                    "name": "deleteRecord",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10238,
                    "src": "5425:12:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10346,
                    "nodeType": "Block",
                    "src": "5726:290:37",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10304,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9969,
                                      "src": "5744:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                        "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                      }
                                    },
                                    "id": 10306,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10305,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10226,
                                      "src": "5752:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5744:13:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                      "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                    }
                                  },
                                  "id": 10308,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10307,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10242,
                                    "src": "5758:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5744:22:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                  }
                                },
                                "id": 10310,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10309,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10248,
                                  "src": "5767:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5744:32:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                  "typeString": "mapping(uint16 => bytes storage ref)"
                                }
                              },
                              "id": 10312,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10311,
                                "name": "resource",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10230,
                                "src": "5777:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5744:42:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 10313,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5744:49:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5797:1:37",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5744:54:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10326,
                        "nodeType": "IfStatement",
                        "src": "5740:136:37",
                        "trueBody": {
                          "id": 10325,
                          "nodeType": "Block",
                          "src": "5800:76:37",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "5818:43:37",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10316,
                                        "name": "nameEntriesCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9977,
                                        "src": "5818:16:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                        }
                                      },
                                      "id": 10320,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10317,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10226,
                                        "src": "5835:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5818:22:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                                      }
                                    },
                                    "id": 10321,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10318,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10242,
                                      "src": "5841:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5818:31:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                      "typeString": "mapping(bytes32 => uint16)"
                                    }
                                  },
                                  "id": 10322,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10319,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10248,
                                    "src": "5850:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5818:41:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 10324,
                              "nodeType": "ExpressionStatement",
                              "src": "5818:43:37"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10327,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9969,
                                    "src": "5889:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                      "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                    }
                                  },
                                  "id": 10332,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10328,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10226,
                                    "src": "5897:4:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5889:13:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                    "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                  }
                                },
                                "id": 10333,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10329,
                                  "name": "version",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10242,
                                  "src": "5903:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5889:22:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                }
                              },
                              "id": 10334,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10330,
                                "name": "nameHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10248,
                                "src": "5912:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5889:32:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                "typeString": "mapping(uint16 => bytes storage ref)"
                              }
                            },
                            "id": 10335,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10331,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10230,
                              "src": "5922:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5889:42:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10336,
                            "name": "rrData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10254,
                            "src": "5934:6:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "5889:51:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 10338,
                        "nodeType": "ExpressionStatement",
                        "src": "5889:51:37"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10340,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10226,
                              "src": "5976:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10341,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10228,
                              "src": "5982:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10342,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10230,
                              "src": "5988:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10343,
                              "name": "rrData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10254,
                              "src": "5998:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 10339,
                            "name": "DNSRecordChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9943,
                            "src": "5959:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16,bytes memory)"
                            }
                          },
                          "id": 10344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5959:46:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10345,
                        "nodeType": "EmitStatement",
                        "src": "5954:51:37"
                      }
                    ]
                  },
                  "id": 10347,
                  "nodeType": "IfStatement",
                  "src": "5421:595:37",
                  "trueBody": {
                    "id": 10303,
                    "nodeType": "Block",
                    "src": "5439:281:37",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10262,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9969,
                                      "src": "5457:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                        "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                      }
                                    },
                                    "id": 10264,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10263,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10226,
                                      "src": "5465:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5457:13:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                      "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                    }
                                  },
                                  "id": 10266,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10265,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10242,
                                    "src": "5471:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5457:22:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                  }
                                },
                                "id": 10268,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10267,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10248,
                                  "src": "5480:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5457:32:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                  "typeString": "mapping(uint16 => bytes storage ref)"
                                }
                              },
                              "id": 10270,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10269,
                                "name": "resource",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10230,
                                "src": "5490:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5457:42:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 10271,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5457:49:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5510:1:37",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5457:54:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10284,
                        "nodeType": "IfStatement",
                        "src": "5453:136:37",
                        "trueBody": {
                          "id": 10283,
                          "nodeType": "Block",
                          "src": "5513:76:37",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "5531:43:37",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10274,
                                        "name": "nameEntriesCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9977,
                                        "src": "5531:16:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                        }
                                      },
                                      "id": 10278,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10275,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10226,
                                        "src": "5548:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5531:22:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                                      }
                                    },
                                    "id": 10279,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10276,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10242,
                                      "src": "5554:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5531:31:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                      "typeString": "mapping(bytes32 => uint16)"
                                    }
                                  },
                                  "id": 10280,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10277,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10248,
                                    "src": "5563:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5531:41:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 10282,
                              "nodeType": "ExpressionStatement",
                              "src": "5531:43:37"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "5602:50:37",
                          "subExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10285,
                                        "name": "records",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9969,
                                        "src": "5609:7:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                        }
                                      },
                                      "id": 10287,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10286,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10226,
                                        "src": "5617:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5609:13:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                      }
                                    },
                                    "id": 10289,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10288,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10242,
                                      "src": "5623:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5609:22:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                      "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                    }
                                  },
                                  "id": 10291,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10290,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10248,
                                    "src": "5632:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5609:32:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint16 => bytes storage ref)"
                                  }
                                },
                                "id": 10293,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10292,
                                  "name": "resource",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10230,
                                  "src": "5642:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5609:42:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "id": 10294,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5608:44:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10296,
                        "nodeType": "ExpressionStatement",
                        "src": "5602:50:37"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10298,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10226,
                              "src": "5688:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10299,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10228,
                              "src": "5694:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10300,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10230,
                              "src": "5700:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 10297,
                            "name": "DNSRecordDeleted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9951,
                            "src": "5671:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16)"
                            }
                          },
                          "id": 10301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5671:38:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10302,
                        "nodeType": "EmitStatement",
                        "src": "5666:43:37"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 10349,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setDNSRRSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10239,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10226,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5087:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10225,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5087:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10228,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5109:17:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10227,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5109:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10230,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5136:15:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 10229,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "5136:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10232,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5161:17:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10231,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5161:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10234,
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5188:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10233,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5188:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10236,
                  "name": "size",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5212:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10235,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5212:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10238,
                  "name": "deleteRecord",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5234:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10237,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5234:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5077:175:37"
            },
            "returnParameters": {
              "id": 10240,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5265:0:37"
            },
            "scope": 10350,
            "src": "5057:965:37",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 10351,
        "src": "114:5910:37"
      }
    ],
    "src": "0:6025:37"
  },
  "legacyAST": {
    "absolutePath": "@ensdomains/resolver/contracts/profiles/DNSResolver.sol",
    "exportedSymbols": {
      "DNSResolver": [
        10350
      ]
    },
    "id": 10351,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9921,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:37"
      },
      {
        "absolutePath": "@ensdomains/resolver/contracts/ResolverBase.sol",
        "file": "../ResolverBase.sol",
        "id": 9922,
        "nodeType": "ImportDirective",
        "scope": 10351,
        "sourceUnit": 9555,
        "src": "25:29:37",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
        "file": "@ensdomains/dnssec-oracle/contracts/RRUtils.sol",
        "id": 9923,
        "nodeType": "ImportDirective",
        "scope": 10351,
        "sourceUnit": 6427,
        "src": "55:57:37",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 9924,
              "name": "ResolverBase",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 9554,
              "src": "138:12:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ResolverBase_$9554",
                "typeString": "contract ResolverBase"
              }
            },
            "id": 9925,
            "nodeType": "InheritanceSpecifier",
            "src": "138:12:37"
          }
        ],
        "contractDependencies": [
          9554
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": false,
        "id": 10350,
        "linearizedBaseContracts": [
          10350,
          9554
        ],
        "name": "DNSResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 9927,
            "libraryName": {
              "contractScope": null,
              "id": 9926,
              "name": "RRUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6426,
              "src": "163:7:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RRUtils_$6426",
                "typeString": "library RRUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "157:20:37",
            "typeName": null
          },
          {
            "id": 9930,
            "libraryName": {
              "contractScope": null,
              "id": 9928,
              "name": "BytesUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5805,
              "src": "188:10:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BytesUtils_$5805",
                "typeString": "library BytesUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "182:27:37",
            "typeName": {
              "id": 9929,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "203:5:37",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            }
          },
          {
            "constant": true,
            "id": 9933,
            "name": "DNS_RECORD_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 10350,
            "src": "215:60:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9931,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "215:6:37",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786138666135363832",
              "id": 9932,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "265:10:37",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_2834978434_by_1",
                "typeString": "int_const 2834978434"
              },
              "value": "0xa8fa5682"
            },
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9943,
            "name": "DNSRecordChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9942,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9935,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "396:20:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9934,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "396:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9937,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "418:10:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9936,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "418:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9939,
                  "indexed": false,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "430:15:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 9938,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "430:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9941,
                  "indexed": false,
                  "name": "record",
                  "nodeType": "VariableDeclaration",
                  "scope": 9943,
                  "src": "447:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9940,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "447:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "395:65:37"
            },
            "src": "373:88:37"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9951,
            "name": "DNSRecordDeleted",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9945,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9951,
                  "src": "580:20:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9944,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "580:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9947,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 9951,
                  "src": "602:10:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9946,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "602:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9949,
                  "indexed": false,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 9951,
                  "src": "614:15:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 9948,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "614:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "579:51:37"
            },
            "src": "557:74:37"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9955,
            "name": "DNSZoneCleared",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9954,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9953,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9955,
                  "src": "743:20:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9952,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "743:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "742:22:37"
            },
            "src": "722:43:37"
          },
          {
            "constant": false,
            "id": 9959,
            "name": "versions",
            "nodeType": "VariableDeclaration",
            "scope": 10350,
            "src": "974:42:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 9958,
              "keyType": {
                "id": 9956,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "982:7:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "974:25:37",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 9957,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "991:7:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 9969,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 10350,
            "src": "1130:92:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"
            },
            "typeName": {
              "id": 9968,
              "keyType": {
                "id": 9960,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1138:7:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1130:76:37",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"
              },
              "valueType": {
                "id": 9967,
                "keyType": {
                  "id": 9961,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1155:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1147:58:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                  "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"
                },
                "valueType": {
                  "id": 9966,
                  "keyType": {
                    "id": 9962,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1172:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1164:40:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes))"
                  },
                  "valueType": {
                    "id": 9965,
                    "keyType": {
                      "id": 9963,
                      "name": "uint16",
                      "nodeType": "ElementaryTypeName",
                      "src": "1189:6:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1181:22:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                      "typeString": "mapping(uint16 => bytes)"
                    },
                    "valueType": {
                      "id": 9964,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "1197:5:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    }
                  }
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 9977,
            "name": "nameEntriesCount",
            "nodeType": "VariableDeclaration",
            "scope": 10350,
            "src": "1394:85:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
            },
            "typeName": {
              "id": 9976,
              "keyType": {
                "id": 9970,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1402:7:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1394:60:37",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
              },
              "valueType": {
                "id": 9975,
                "keyType": {
                  "id": 9971,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1419:7:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1411:42:37",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                  "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                },
                "valueType": {
                  "id": 9974,
                  "keyType": {
                    "id": 9972,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1436:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1428:24:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                    "typeString": "mapping(bytes32 => uint16)"
                  },
                  "valueType": {
                    "id": 9973,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "1445:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  }
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "body": {
              "id": 10141,
              "nodeType": "Block",
              "src": "2487:1179:37",
              "statements": [
                {
                  "assignments": [
                    9988
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9988,
                      "name": "resource",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2497:15:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      },
                      "typeName": {
                        "id": 9987,
                        "name": "uint16",
                        "nodeType": "ElementaryTypeName",
                        "src": "2497:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9990,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 9989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2515:1:37",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2497:19:37"
                },
                {
                  "assignments": [
                    9992
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9992,
                      "name": "offset",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2526:14:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9991,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2526:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9994,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 9993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2543:1:37",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2526:18:37"
                },
                {
                  "assignments": [
                    9996
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9996,
                      "name": "name",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2554:17:37",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9995,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2554:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9997,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2554:17:37"
                },
                {
                  "assignments": [
                    9999
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9999,
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2581:18:37",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9998,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2581:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10000,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2581:18:37"
                },
                {
                  "assignments": [
                    10002
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10002,
                      "name": "nameHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 10141,
                      "src": "2609:16:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 10001,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2609:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10003,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2609:16:37"
                },
                {
                  "body": {
                    "id": 10117,
                    "nodeType": "Block",
                    "src": "2781:736:37",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          },
                          "id": 10023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10021,
                            "name": "resource",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9988,
                            "src": "2799:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint16",
                              "typeString": "uint16"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2811:1:37",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2799:13:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 10115,
                          "nodeType": "Block",
                          "src": "3019:488:37",
                          "statements": [
                            {
                              "assignments": [
                                10054
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10054,
                                  "name": "newName",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10115,
                                  "src": "3037:20:37",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 10053,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3037:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10058,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10055,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10007,
                                    "src": "3060:4:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 10056,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "name",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6111,
                                  "src": "3060:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                                    "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                  }
                                },
                                "id": 10057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3060:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3037:34:37"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 10068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  },
                                  "id": 10062,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 10059,
                                    "name": "resource",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9988,
                                    "src": "3093:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10060,
                                      "name": "iter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10007,
                                      "src": "3105:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 10061,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "dnstype",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5938,
                                    "src": "3105:12:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint16",
                                      "typeString": "uint16"
                                    }
                                  },
                                  "src": "3093:24:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 10067,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "!",
                                  "prefix": true,
                                  "src": "3121:21:37",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 10065,
                                        "name": "newName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10054,
                                        "src": "3134:7:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 10063,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9996,
                                        "src": "3122:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 10064,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "equals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 5375,
                                      "src": "3122:11:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,bytes memory) pure returns (bool)"
                                      }
                                    },
                                    "id": 10066,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3122:20:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "3093:49:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 10114,
                              "nodeType": "IfStatement",
                              "src": "3089:404:37",
                              "trueBody": {
                                "id": 10113,
                                "nodeType": "Block",
                                "src": "3144:349:37",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10070,
                                          "name": "node",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9979,
                                          "src": "3178:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 10071,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9996,
                                          "src": "3184:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 10072,
                                          "name": "resource",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9988,
                                          "src": "3190:8:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 10073,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9981,
                                          "src": "3200:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 10074,
                                          "name": "offset",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9992,
                                          "src": "3206:6:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 10078,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10075,
                                              "name": "iter",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10007,
                                              "src": "3214:4:37",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                                "typeString": "struct RRUtils.RRIterator memory"
                                              }
                                            },
                                            "id": 10076,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "offset",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 5936,
                                            "src": "3214:11:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "id": 10077,
                                            "name": "offset",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9992,
                                            "src": "3228:6:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "3214:20:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 10082,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 10079,
                                              "name": "value",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9999,
                                              "src": "3236:5:37",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            "id": 10080,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "3236:12:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "30",
                                            "id": 10081,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3252:1:37",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "3236:17:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint16",
                                            "typeString": "uint16"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                            "typeString": "bytes calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 10069,
                                        "name": "setDNSRRSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10349,
                                        "src": "3166:11:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                                          "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)"
                                        }
                                      },
                                      "id": 10083,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3166:88:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 10084,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3166:88:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10088,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10085,
                                        "name": "resource",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9988,
                                        "src": "3276:8:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10086,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10007,
                                          "src": "3287:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 10087,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "dnstype",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5938,
                                        "src": "3287:12:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint16",
                                          "typeString": "uint16"
                                        }
                                      },
                                      "src": "3276:23:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint16",
                                        "typeString": "uint16"
                                      }
                                    },
                                    "id": 10089,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3276:23:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10093,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10090,
                                        "name": "offset",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9992,
                                        "src": "3321:6:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10091,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10007,
                                          "src": "3330:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 10092,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "offset",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5936,
                                        "src": "3330:11:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3321:20:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 10094,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3321:20:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10097,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10095,
                                        "name": "name",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9996,
                                        "src": "3363:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "id": 10096,
                                        "name": "newName",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10054,
                                        "src": "3370:7:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "3363:14:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 10098,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3363:14:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10103,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10099,
                                        "name": "nameHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10002,
                                        "src": "3399:8:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 10101,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9996,
                                            "src": "3420:4:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 10100,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13004,
                                          "src": "3410:9:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 10102,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3410:15:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "src": "3399:26:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "id": 10104,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3399:26:37"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10111,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 10105,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9999,
                                        "src": "3447:5:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 10107,
                                                "name": "iter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 10007,
                                                "src": "3461:4:37",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                                  "typeString": "struct RRUtils.RRIterator memory"
                                                }
                                              },
                                              "id": 10108,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rdata",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6131,
                                              "src": "3461:10:37",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                                                "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 10109,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3461:12:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 10106,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3455:5:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": "bytes"
                                        },
                                        "id": 10110,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3455:19:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "src": "3447:27:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 10112,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3447:27:37"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 10116,
                        "nodeType": "IfStatement",
                        "src": "2795:712:37",
                        "trueBody": {
                          "id": 10052,
                          "nodeType": "Block",
                          "src": "2814:199:37",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10024,
                                  "name": "resource",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9988,
                                  "src": "2832:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 10025,
                                    "name": "iter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10007,
                                    "src": "2843:4:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                      "typeString": "struct RRUtils.RRIterator memory"
                                    }
                                  },
                                  "id": 10026,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "dnstype",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5938,
                                  "src": "2843:12:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "src": "2832:23:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 10028,
                              "nodeType": "ExpressionStatement",
                              "src": "2832:23:37"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10029,
                                  "name": "name",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9996,
                                  "src": "2873:4:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 10030,
                                      "name": "iter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10007,
                                      "src": "2880:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                        "typeString": "struct RRUtils.RRIterator memory"
                                      }
                                    },
                                    "id": 10031,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "name",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6111,
                                    "src": "2880:9:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                                      "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 10032,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2880:11:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "2873:18:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 10034,
                              "nodeType": "ExpressionStatement",
                              "src": "2873:18:37"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10035,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10002,
                                  "src": "2909:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 10039,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9996,
                                          "src": "2947:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10037,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12997,
                                          "src": "2930:3:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 10038,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "2930:16:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 10040,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2930:22:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 10036,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13004,
                                    "src": "2920:9:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 10041,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2920:33:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "2909:44:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 10043,
                              "nodeType": "ExpressionStatement",
                              "src": "2909:44:37"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 10044,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9999,
                                  "src": "2971:5:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 10046,
                                          "name": "iter",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10007,
                                          "src": "2985:4:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                                            "typeString": "struct RRUtils.RRIterator memory"
                                          }
                                        },
                                        "id": 10047,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "rdata",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6131,
                                        "src": "2985:10:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                                          "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 10048,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2985:12:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 10045,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2979:5:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": "bytes"
                                  },
                                  "id": 10049,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2979:19:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "2971:27:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 10051,
                              "nodeType": "ExpressionStatement",
                              "src": "2971:27:37"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "id": 10016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "2754:12:37",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10013,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10007,
                          "src": "2755:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 10014,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "done",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5988,
                        "src": "2755:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                          "typeString": "function (struct RRUtils.RRIterator memory) pure returns (bool)"
                        }
                      },
                      "id": 10015,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2755:11:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 10118,
                  "initializationExpression": {
                    "assignments": [
                      10007
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 10007,
                        "name": "iter",
                        "nodeType": "VariableDeclaration",
                        "scope": 10118,
                        "src": "2701:30:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                          "typeString": "struct RRUtils.RRIterator"
                        },
                        "typeName": {
                          "contractScope": null,
                          "id": 10006,
                          "name": "RRUtils.RRIterator",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5947,
                          "src": "2701:18:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$5947_storage_ptr",
                            "typeString": "struct RRUtils.RRIterator"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 10012,
                    "initialValue": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2750:1:37",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10008,
                          "name": "data",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9981,
                          "src": "2734:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "id": 10009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "iterateRRs",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5973,
                        "src": "2734:15:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_struct$_RRIterator_$5947_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                          "typeString": "function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"
                        }
                      },
                      "id": 10011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2734:18:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                        "typeString": "struct RRUtils.RRIterator memory"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2701:51:37"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10017,
                          "name": "iter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10007,
                          "src": "2768:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_RRIterator_$5947_memory_ptr",
                            "typeString": "struct RRUtils.RRIterator memory"
                          }
                        },
                        "id": 10018,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "next",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6090,
                        "src": "2768:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_RRIterator_$5947_memory_ptr_$returns$__$bound_to$_t_struct$_RRIterator_$5947_memory_ptr_$",
                          "typeString": "function (struct RRUtils.RRIterator memory) pure"
                        }
                      },
                      "id": 10019,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2768:11:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 10020,
                    "nodeType": "ExpressionStatement",
                    "src": "2768:11:37"
                  },
                  "nodeType": "ForStatement",
                  "src": "2696:821:37"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 10119,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9996,
                        "src": "3530:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 10120,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3530:11:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 10121,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3544:1:37",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3530:15:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 10140,
                  "nodeType": "IfStatement",
                  "src": "3526:134:37",
                  "trueBody": {
                    "id": 10139,
                    "nodeType": "Block",
                    "src": "3547:113:37",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10124,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9979,
                              "src": "3573:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10125,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9996,
                              "src": "3579:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10126,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9988,
                              "src": "3585:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10127,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9981,
                              "src": "3595:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10128,
                              "name": "offset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9992,
                              "src": "3601:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10129,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9981,
                                  "src": "3609:4:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                },
                                "id": 10130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3609:11:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 10131,
                                "name": "offset",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9992,
                                "src": "3623:6:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3609:20:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 10133,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9999,
                                  "src": "3631:5:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 10134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3631:12:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 10135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3647:1:37",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3631:17:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 10123,
                            "name": "setDNSRRSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10349,
                            "src": "3561:11:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)"
                            }
                          },
                          "id": 10137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3561:88:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10138,
                        "nodeType": "ExpressionStatement",
                        "src": "3561:88:37"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "Set one or more DNS records.  Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n    a.example.com IN A 1.2.3.4\n    a.example.com IN A 5.6.7.8\n    www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n    a.example.com IN A 1.2.3.4\n    www.example.com IN CNAME a.example.com.\n    a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n     * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set",
            "id": 10142,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9984,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9979,
                    "src": "2481:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9985,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9983,
                  "name": "authorised",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9521,
                  "src": "2470:10:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2470:16:37"
              }
            ],
            "name": "setDNSRecords",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9979,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10142,
                  "src": "2426:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9978,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2426:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9981,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 10142,
                  "src": "2440:19:37",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9980,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2440:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2425:35:37"
            },
            "returnParameters": {
              "id": 9986,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2487:0:37"
            },
            "scope": 10350,
            "src": "2403:1263:37",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 10165,
              "nodeType": "Block",
              "src": "4167:69:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10153,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9969,
                            "src": "4184:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                              "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                            }
                          },
                          "id": 10155,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10154,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10144,
                            "src": "4192:4:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4184:13:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                            "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                          }
                        },
                        "id": 10159,
                        "indexExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 10156,
                            "name": "versions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9959,
                            "src": "4198:8:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 10158,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10157,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10144,
                            "src": "4207:4:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4198:14:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4184:29:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                          "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                        }
                      },
                      "id": 10161,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10160,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10146,
                        "src": "4214:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4184:35:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                        "typeString": "mapping(uint16 => bytes storage ref)"
                      }
                    },
                    "id": 10163,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10162,
                      "name": "resource",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10148,
                      "src": "4220:8:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint16",
                        "typeString": "uint16"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4184:45:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 10152,
                  "id": 10164,
                  "nodeType": "Return",
                  "src": "4177:52:37"
                }
              ]
            },
            "documentation": "Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty",
            "id": 10166,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "dnsRecord",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10144,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10166,
                  "src": "4087:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10143,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4087:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10146,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 10166,
                  "src": "4101:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10145,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4101:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10148,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 10166,
                  "src": "4115:15:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 10147,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "4115:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4086:45:37"
            },
            "returnParameters": {
              "id": 10152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10151,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10166,
                  "src": "4153:12:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10150,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4153:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4152:14:37"
            },
            "scope": 10350,
            "src": "4068:168:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10188,
              "nodeType": "Block",
              "src": "4528:75:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        },
                        "id": 10185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10175,
                                "name": "nameEntriesCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9977,
                                "src": "4546:16:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                }
                              },
                              "id": 10177,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10176,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10168,
                                "src": "4563:4:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4546:22:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                              }
                            },
                            "id": 10181,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 10178,
                                "name": "versions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9959,
                                "src": "4569:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                  "typeString": "mapping(bytes32 => uint256)"
                                }
                              },
                              "id": 10180,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10179,
                                "name": "node",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10168,
                                "src": "4578:4:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4569:14:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4546:38:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                              "typeString": "mapping(bytes32 => uint16)"
                            }
                          },
                          "id": 10183,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 10182,
                            "name": "name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10170,
                            "src": "4585:4:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4546:44:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint16",
                            "typeString": "uint16"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 10184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4594:1:37",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4546:49:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 10186,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "4545:51:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10174,
                  "id": 10187,
                  "nodeType": "Return",
                  "src": "4538:58:37"
                }
              ]
            },
            "documentation": "Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records",
            "id": 10189,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "hasDNSRecords",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10171,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10168,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10189,
                  "src": "4473:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10167,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4473:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10170,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 10189,
                  "src": "4487:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10169,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4487:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4472:28:37"
            },
            "returnParameters": {
              "id": 10174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10173,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10189,
                  "src": "4522:4:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10172,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4522:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4521:6:37"
            },
            "scope": 10350,
            "src": "4450:153:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10206,
              "nodeType": "Block",
              "src": "4802:68:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 10200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "4812:16:37",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 10197,
                        "name": "versions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9959,
                        "src": "4812:8:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                          "typeString": "mapping(bytes32 => uint256)"
                        }
                      },
                      "id": 10199,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 10198,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10191,
                        "src": "4821:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4812:14:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 10201,
                  "nodeType": "ExpressionStatement",
                  "src": "4812:16:37"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10203,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10191,
                        "src": "4858:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 10202,
                      "name": "DNSZoneCleared",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9955,
                      "src": "4843:14:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32)"
                      }
                    },
                    "id": 10204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4843:20:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 10205,
                  "nodeType": "EmitStatement",
                  "src": "4838:25:37"
                }
              ]
            },
            "documentation": "Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone",
            "id": 10207,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 10194,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10191,
                    "src": "4796:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 10195,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 10193,
                  "name": "authorised",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9521,
                  "src": "4785:10:37",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4785:16:37"
              }
            ],
            "name": "clearDNSZone",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10191,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10207,
                  "src": "4764:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10190,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4764:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4763:14:37"
            },
            "returnParameters": {
              "id": 10196,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4802:0:37"
            },
            "scope": 10350,
            "src": "4742:128:37",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10223,
              "nodeType": "Block",
              "src": "4949:102:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 10221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 10216,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 10214,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10209,
                        "src": "4966:11:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 10215,
                        "name": "DNS_RECORD_INTERFACE_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9933,
                        "src": "4981:23:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "4966:38:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 10219,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 10209,
                          "src": "5032:11:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 10217,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13113,
                          "src": "5008:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_super$_DNSResolver_$10350",
                            "typeString": "contract super DNSResolver"
                          }
                        },
                        "id": 10218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9502,
                        "src": "5008:23:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) pure returns (bool)"
                        }
                      },
                      "id": 10220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5008:36:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4966:78:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 10213,
                  "id": 10222,
                  "nodeType": "Return",
                  "src": "4959:85:37"
                }
              ]
            },
            "documentation": null,
            "id": 10224,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10209,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 10224,
                  "src": "4903:18:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 10208,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "4903:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4902:20:37"
            },
            "returnParameters": {
              "id": 10213,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10212,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 10224,
                  "src": "4943:4:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10211,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4943:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4942:6:37"
            },
            "scope": 10350,
            "src": "4876:175:37",
            "stateMutability": "pure",
            "superFunction": 9502,
            "visibility": "public"
          },
          {
            "body": {
              "id": 10348,
              "nodeType": "Block",
              "src": "5265:757:37",
              "statements": [
                {
                  "assignments": [
                    10242
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10242,
                      "name": "version",
                      "nodeType": "VariableDeclaration",
                      "scope": 10348,
                      "src": "5275:15:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 10241,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5275:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10246,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 10243,
                      "name": "versions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9959,
                      "src": "5293:8:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                        "typeString": "mapping(bytes32 => uint256)"
                      }
                    },
                    "id": 10245,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 10244,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10226,
                      "src": "5302:4:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5293:14:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5275:32:37"
                },
                {
                  "assignments": [
                    10248
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10248,
                      "name": "nameHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 10348,
                      "src": "5317:16:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 10247,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5317:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10252,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10250,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10228,
                        "src": "5346:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 10249,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13004,
                      "src": "5336:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 10251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5336:15:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5317:34:37"
                },
                {
                  "assignments": [
                    10254
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 10254,
                      "name": "rrData",
                      "nodeType": "VariableDeclaration",
                      "scope": 10348,
                      "src": "5361:19:37",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 10253,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "5361:5:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 10260,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 10257,
                        "name": "offset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10234,
                        "src": "5398:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 10258,
                        "name": "size",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10236,
                        "src": "5406:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 10255,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10232,
                        "src": "5383:4:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 10256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "substring",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5582,
                      "src": "5383:14:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 10259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5383:28:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5361:50:37"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 10261,
                    "name": "deleteRecord",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 10238,
                    "src": "5425:12:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 10346,
                    "nodeType": "Block",
                    "src": "5726:290:37",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10315,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10304,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9969,
                                      "src": "5744:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                        "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                      }
                                    },
                                    "id": 10306,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10305,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10226,
                                      "src": "5752:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5744:13:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                      "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                    }
                                  },
                                  "id": 10308,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10307,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10242,
                                    "src": "5758:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5744:22:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                  }
                                },
                                "id": 10310,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10309,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10248,
                                  "src": "5767:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5744:32:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                  "typeString": "mapping(uint16 => bytes storage ref)"
                                }
                              },
                              "id": 10312,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10311,
                                "name": "resource",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10230,
                                "src": "5777:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5744:42:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 10313,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5744:49:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5797:1:37",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5744:54:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10326,
                        "nodeType": "IfStatement",
                        "src": "5740:136:37",
                        "trueBody": {
                          "id": 10325,
                          "nodeType": "Block",
                          "src": "5800:76:37",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "5818:43:37",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10316,
                                        "name": "nameEntriesCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9977,
                                        "src": "5818:16:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                        }
                                      },
                                      "id": 10320,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10317,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10226,
                                        "src": "5835:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5818:22:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                                      }
                                    },
                                    "id": 10321,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10318,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10242,
                                      "src": "5841:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5818:31:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                      "typeString": "mapping(bytes32 => uint16)"
                                    }
                                  },
                                  "id": 10322,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10319,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10248,
                                    "src": "5850:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5818:41:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 10324,
                              "nodeType": "ExpressionStatement",
                              "src": "5818:43:37"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 10327,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9969,
                                    "src": "5889:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                      "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                    }
                                  },
                                  "id": 10332,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10328,
                                    "name": "node",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10226,
                                    "src": "5897:4:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5889:13:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                    "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                  }
                                },
                                "id": 10333,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10329,
                                  "name": "version",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10242,
                                  "src": "5903:7:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5889:22:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                  "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                }
                              },
                              "id": 10334,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10330,
                                "name": "nameHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10248,
                                "src": "5912:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5889:32:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                "typeString": "mapping(uint16 => bytes storage ref)"
                              }
                            },
                            "id": 10335,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 10331,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10230,
                              "src": "5922:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5889:42:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 10336,
                            "name": "rrData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10254,
                            "src": "5934:6:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "5889:51:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage",
                            "typeString": "bytes storage ref"
                          }
                        },
                        "id": 10338,
                        "nodeType": "ExpressionStatement",
                        "src": "5889:51:37"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10340,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10226,
                              "src": "5976:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10341,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10228,
                              "src": "5982:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10342,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10230,
                              "src": "5988:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10343,
                              "name": "rrData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10254,
                              "src": "5998:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 10339,
                            "name": "DNSRecordChanged",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9943,
                            "src": "5959:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16,bytes memory)"
                            }
                          },
                          "id": 10344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5959:46:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10345,
                        "nodeType": "EmitStatement",
                        "src": "5954:51:37"
                      }
                    ]
                  },
                  "id": 10347,
                  "nodeType": "IfStatement",
                  "src": "5421:595:37",
                  "trueBody": {
                    "id": 10303,
                    "nodeType": "Block",
                    "src": "5439:281:37",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 10262,
                                      "name": "records",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9969,
                                      "src": "5457:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                        "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                      }
                                    },
                                    "id": 10264,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10263,
                                      "name": "node",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10226,
                                      "src": "5465:4:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5457:13:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                      "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                    }
                                  },
                                  "id": 10266,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10265,
                                    "name": "version",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10242,
                                    "src": "5471:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5457:22:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                    "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                  }
                                },
                                "id": 10268,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10267,
                                  "name": "nameHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10248,
                                  "src": "5480:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5457:32:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                  "typeString": "mapping(uint16 => bytes storage ref)"
                                }
                              },
                              "id": 10270,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 10269,
                                "name": "resource",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10230,
                                "src": "5490:8:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5457:42:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage",
                                "typeString": "bytes storage ref"
                              }
                            },
                            "id": 10271,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5457:49:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 10272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5510:1:37",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5457:54:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 10284,
                        "nodeType": "IfStatement",
                        "src": "5453:136:37",
                        "trueBody": {
                          "id": 10283,
                          "nodeType": "Block",
                          "src": "5513:76:37",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 10281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "--",
                                "prefix": false,
                                "src": "5531:43:37",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10274,
                                        "name": "nameEntriesCount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9977,
                                        "src": "5531:16:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"
                                        }
                                      },
                                      "id": 10278,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10275,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10226,
                                        "src": "5548:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5531:22:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint16_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => uint16))"
                                      }
                                    },
                                    "id": 10279,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10276,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10242,
                                      "src": "5554:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5531:31:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint16_$",
                                      "typeString": "mapping(bytes32 => uint16)"
                                    }
                                  },
                                  "id": 10280,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10277,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10248,
                                    "src": "5563:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5531:41:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint16",
                                  "typeString": "uint16"
                                }
                              },
                              "id": 10282,
                              "nodeType": "ExpressionStatement",
                              "src": "5531:43:37"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 10295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "5602:50:37",
                          "subExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 10285,
                                        "name": "records",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9969,
                                        "src": "5609:7:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$_$",
                                          "typeString": "mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))"
                                        }
                                      },
                                      "id": 10287,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 10286,
                                        "name": "node",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10226,
                                        "src": "5617:4:37",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5609:13:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$_$",
                                        "typeString": "mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"
                                      }
                                    },
                                    "id": 10289,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 10288,
                                      "name": "version",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10242,
                                      "src": "5623:7:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5609:22:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_uint16_$_t_bytes_storage_$_$",
                                      "typeString": "mapping(bytes32 => mapping(uint16 => bytes storage ref))"
                                    }
                                  },
                                  "id": 10291,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 10290,
                                    "name": "nameHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10248,
                                    "src": "5632:8:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5609:32:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint16_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint16 => bytes storage ref)"
                                  }
                                },
                                "id": 10293,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 10292,
                                  "name": "resource",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10230,
                                  "src": "5642:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint16",
                                    "typeString": "uint16"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5609:42:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              }
                            ],
                            "id": 10294,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5608:44:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10296,
                        "nodeType": "ExpressionStatement",
                        "src": "5602:50:37"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 10298,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10226,
                              "src": "5688:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10299,
                              "name": "name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10228,
                              "src": "5694:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 10300,
                              "name": "resource",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10230,
                              "src": "5700:8:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint16",
                                "typeString": "uint16"
                              }
                            ],
                            "id": 10297,
                            "name": "DNSRecordDeleted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9951,
                            "src": "5671:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint16_$returns$__$",
                              "typeString": "function (bytes32,bytes memory,uint16)"
                            }
                          },
                          "id": 10301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5671:38:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10302,
                        "nodeType": "EmitStatement",
                        "src": "5666:43:37"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 10349,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setDNSRRSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 10239,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 10226,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5087:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10225,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5087:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10228,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5109:17:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10227,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5109:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10230,
                  "name": "resource",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5136:15:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 10229,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "5136:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10232,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5161:17:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 10231,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5161:5:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10234,
                  "name": "offset",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5188:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10233,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5188:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10236,
                  "name": "size",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5212:12:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10235,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5212:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10238,
                  "name": "deleteRecord",
                  "nodeType": "VariableDeclaration",
                  "scope": 10349,
                  "src": "5234:17:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 10237,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5234:4:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5077:175:37"
            },
            "returnParameters": {
              "id": 10240,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5265:0:37"
            },
            "scope": 10350,
            "src": "5057:965:37",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "private"
          }
        ],
        "scope": 10351,
        "src": "114:5910:37"
      }
    ],
    "src": "0:6025:37"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-17T12:57:44.988Z",
  "devdoc": {
    "methods": {
      "clearDNSZone(bytes32)": {
        "params": {
          "node": "the namehash of the node for which to clear the zone"
        }
      },
      "dnsRecord(bytes32,bytes32,uint16)": {
        "params": {
          "name": "the keccak-256 hash of the fully-qualified name for which to fetch the record",
          "node": "the namehash of the node for which to fetch the record",
          "resource": "the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types"
        },
        "return": "the DNS record in wire format if present, otherwise empty"
      },
      "hasDNSRecords(bytes32,bytes32)": {
        "params": {
          "name": "the namehash of the node for which to check the records",
          "node": "the namehash of the node for which to check the records"
        }
      },
      "setDNSRecords(bytes32,bytes)": {
        "params": {
          "data": "the DNS wire format records to set",
          "node": "the namehash of the node for which to set the records"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "clearDNSZone(bytes32)": {
        "notice": "Clear all information for a DNS zone."
      },
      "dnsRecord(bytes32,bytes32,uint16)": {
        "notice": "Obtain a DNS record."
      },
      "hasDNSRecords(bytes32,bytes32)": {
        "notice": "Check if a given node has records."
      },
      "setDNSRecords(bytes32,bytes)": {
        "notice": "Set one or more DNS records.  Records are supplied in wire-format. Records with the same node/name/resource must be supplied one after the other to ensure the data is updated correctly. For example, if the data was supplied:    a.example.com IN A 1.2.3.4    a.example.com IN A 5.6.7.8    www.example.com IN CNAME a.example.com. then this would store the two A records for a.example.com correctly as a single RRSET, however if the data was supplied:    a.example.com IN A 1.2.3.4    www.example.com IN CNAME a.example.com.    a.example.com IN A 5.6.7.8 then this would store the first A record, the CNAME, then the second A record which would overwrite the first."
      }
    }
  }
}