{
  "contractName": "PublicResolver",
  "abi": [
    {
      "inputs": [
        {
          "name": "ensAddr",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "a",
          "type": "address"
        }
      ],
      "name": "AddrChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "ContentChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "name",
          "type": "string"
        }
      ],
      "name": "NameChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "contentType",
          "type": "uint256"
        }
      ],
      "name": "ABIChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "x",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "y",
          "type": "bytes32"
        }
      ],
      "name": "PubkeyChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "node",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "indexedKey",
          "type": "string"
        },
        {
          "indexed": false,
          "name": "key",
          "type": "string"
        }
      ],
      "name": "TextChanged",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "interfaceID",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "addr",
      "outputs": [
        {
          "name": "ret",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "setAddr",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "content",
      "outputs": [
        {
          "name": "ret",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "setContent",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "name",
      "outputs": [
        {
          "name": "ret",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "name",
          "type": "string"
        }
      ],
      "name": "setName",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "contentTypes",
          "type": "uint256"
        }
      ],
      "name": "ABI",
      "outputs": [
        {
          "name": "contentType",
          "type": "uint256"
        },
        {
          "name": "data",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "contentType",
          "type": "uint256"
        },
        {
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "setABI",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        }
      ],
      "name": "pubkey",
      "outputs": [
        {
          "name": "x",
          "type": "bytes32"
        },
        {
          "name": "y",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "x",
          "type": "bytes32"
        },
        {
          "name": "y",
          "type": "bytes32"
        }
      ],
      "name": "setPubkey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "text",
      "outputs": [
        {
          "name": "ret",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "node",
          "type": "bytes32"
        },
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "string"
        }
      ],
      "name": "setText",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.4.24+commit.e67f0147\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"name\":\"contentType\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"content\",\"outputs\":[{\"name\":\"ret\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"ret\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"name\":\"ret\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentType\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"name\":\"ret\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"setContent\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"ensAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"ContentChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"key\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"ABI(bytes32,uint256)\":{\"params\":{\"contentTypes\":\"A bitwise OR of the ABI formats accepted by the caller.\",\"node\":\"The ENS node to query\"},\"return\":\"contentType The content type of the return valuedata The ABI data\"},\"addr(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"return\":\"The associated address.\"},\"content(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"return\":\"The associated content hash.\"},\"name(bytes32)\":{\"params\":{\"node\":\"The ENS node to query.\"},\"return\":\"The associated name.\"},\"pubkey(bytes32)\":{\"params\":{\"node\":\"The ENS node to query\"},\"return\":\"x, y the X and Y coordinates of the curve point for the public key.\"},\"setABI(bytes32,uint256,bytes)\":{\"params\":{\"contentType\":\"The content type of the ABI\",\"data\":\"The ABI data.\",\"node\":\"The node to update.\"}},\"setAddr(bytes32,address)\":{\"params\":{\"addr\":\"The address to set.\",\"node\":\"The node to update.\"}},\"setContent(bytes32,bytes32)\":{\"params\":{\"hash\":\"The content hash to set\",\"node\":\"The node to update.\"}},\"setName(bytes32,string)\":{\"params\":{\"name\":\"The name to set.\",\"node\":\"The node to update.\"}},\"setPubkey(bytes32,bytes32,bytes32)\":{\"params\":{\"node\":\"The ENS node to query\",\"x\":\"the X coordinate of the curve point for the public key.\",\"y\":\"the Y coordinate of the curve point for the public key.\"}},\"setText(bytes32,string,string)\":{\"params\":{\"key\":\"The key to set.\",\"node\":\"The node to update.\",\"value\":\"The text data value to set.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceID\":\"The ID of the interface to check for.\"},\"return\":\"True if the contract implements the requested interface.\"},\"text(bytes32,string)\":{\"params\":{\"key\":\"The text data key to query.\",\"node\":\"The ENS node to query.\"},\"return\":\"The associated text data.\"}}},\"userdoc\":{\"methods\":{\"ABI(bytes32,uint256)\":{\"notice\":\"Returns the ABI associated with an ENS node. Defined in EIP205.\"},\"addr(bytes32)\":{\"notice\":\"Returns the address associated with an ENS node.\"},\"content(bytes32)\":{\"notice\":\"Returns the content hash associated with an ENS node. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash.\"},\"name(bytes32)\":{\"notice\":\"Returns the name associated with an ENS node, for reverse records. Defined in EIP181.\"},\"pubkey(bytes32)\":{\"notice\":\"Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619.\"},\"setABI(bytes32,uint256,bytes)\":{\"notice\":\"Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string.\"},\"setAddr(bytes32,address)\":{\"notice\":\"Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry.\"},\"setContent(bytes32,bytes32)\":{\"notice\":\"Sets the content hash associated with an ENS node. May only be called by the owner of that node in the ENS registry. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash.\"},\"setName(bytes32,string)\":{\"notice\":\"Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry.\"},\"setPubkey(bytes32,bytes32,bytes32)\":{\"notice\":\"Sets the SECP256k1 public key associated with an ENS node.\"},\"setText(bytes32,string,string)\":{\"notice\":\"Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Returns true if the resolver implements the interface specified by the provided hash.\"},\"text(bytes32,string)\":{\"notice\":\"Returns the text data associated with an ENS node and key.\"}}}},\"settings\":{\"compilationTarget\":{\"@aragon/os/contracts/lib/ens/PublicResolver.sol\":\"PublicResolver\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@aragon/os/contracts/lib/ens/AbstractENS.sol\":{\"keccak256\":\"0x8deaa274dfc550c8251576dfa0dde1e58933728ced575de4f5b12391fd358c95\",\"urls\":[\"bzzr://8b03da0d3461879e624d00d27d32c0e28fbb7c13d934ca3bb261225c5632aa0b\"]},\"@aragon/os/contracts/lib/ens/PublicResolver.sol\":{\"keccak256\":\"0x8c538f586fdf66528c5c6e2e916c79f00762a2fba3ec0e7be78dc0e3fda4ac2c\",\"urls\":[\"bzzr://b49189c02861a9bd108f64a504bc77e7c0ea681ccdd5a582c5f3a94c43c5f2c3\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b5060405160208061141e833981016040525160008054600160a060020a03909216600160a060020a03199092169190911790556113cc806100526000396000f3006080604052600436106100c45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146100c957806310f13a8c146101175780632203ab56146101b557806329cd62ea1461024f5780632dff69411461026d5780633b3b57de1461029757806359d1d43c146102d8578063623195b0146103ab578063691f34311461040b5780637737221314610423578063c3d014d614610481578063c86902331461049c578063d5fa2b00146104cd575b600080fd5b3480156100d557600080fd5b506101037fffffffff00000000000000000000000000000000000000000000000000000000600435166104fe565b604080519115158252519081900360200190f35b34801561012357600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101b395833595369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506107139650505050505050565b005b3480156101c157600080fd5b506101d060043560243561098f565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156102135781810151838201526020016101fb565b50505050905090810190601f1680156102405780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561025b57600080fd5b506101b3600435602435604435610a9b565b34801561027957600080fd5b50610285600435610bcb565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102af600435610be1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102e457600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610336958335953695604494919390910191908190840183828082843750949750610c099650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610370578181015183820152602001610358565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b757600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101b3948235946024803595369594606494920191908190840183828082843750949750610d309650505050505050565b34801561041757600080fd5b50610336600435610e61565b34801561042f57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101b3958335953695604494919390910191908190840183828082843750949750610f059650505050505050565b34801561048d57600080fd5b506101b360043560243561108b565b3480156104a857600080fd5b506104b460043561119c565b6040805192835260208301919091528051918290030190f35b3480156104d957600080fd5b506101b360043573ffffffffffffffffffffffffffffffffffffffff602435166111b9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061059157507fffffffff0000000000000000000000000000000000000000000000000000000082167fd8389dc500000000000000000000000000000000000000000000000000000000145b806105dd57507fffffffff0000000000000000000000000000000000000000000000000000000082167f691f343100000000000000000000000000000000000000000000000000000000145b8061062957507fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000145b8061067557507fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000145b806106c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c00000000000000000000000000000000000000000000000000000000145b8061070d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050506040513d60208110156107b357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16146107d557600080fd5b6000848152600160209081526040918290209151855185936005019287929182918401908083835b6020831061083a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107fd565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101909320845161087b9591949190910192509050611305565b50826040518082805190602001908083835b602083106108ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161088d565b51815160209384036101000a60001901801990921691161790526040805192909401829003822081835289518383015289519096508a95507fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550948a94508392908301919085019080838360005b8381101561094f578181015183820152602001610937565b50505050905090810190601f16801561097c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a350505050565b60008281526001602081905260409091206060905b838311610a8e57828416158015906109dd5750600083815260068201602052604081205460026000196101006001841615020190911604115b15610a8357600083815260068201602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050509150610a93565b6002909202916109a4565b600092505b509250929050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610b1157600080fd5b505af1158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610b5d57600080fd5b604080518082018252848152602080820185815260008881526001835284902092516003840155516004909201919091558151858152908101849052815186927f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46928290030190a250505050565b6000908152600160208190526040909120015490565b60009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600082815260016020908152604091829020915183516060936005019285929182918401908083835b60208310610c6f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c32565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610d235780601f10610cf857610100808354040283529160200191610d23565b820191906000526020600020905b815481529060010190602001808311610d0657829003601f168201915b5050505050905092915050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610da657600080fd5b505af1158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610df257600080fd5b6000198301831615610e0357600080fd5b600084815260016020908152604080832086845260060182529091208351610e2d92850190611305565b50604051839085907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a350505050565b6000818152600160208181526040928390206002908101805485516000199582161561010002959095011691909104601f81018390048302840183019094528383526060939091830182828015610ef95780601f10610ece57610100808354040283529160200191610ef9565b820191906000526020600020905b815481529060010190602001808311610edc57829003601f168201915b50505050509050919050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610fc757600080fd5b60008381526001602090815260409091208351610fec92600290920191850190611305565b50604080516020808252845181830152845186937fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f79387939092839283019185019080838360005b8381101561104c578181015183820152602001611034565b50505050905090810190601f1680156110795780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561110157600080fd5b505af1158015611115573d6000803e3d6000fd5b505050506040513d602081101561112b57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461114d57600080fd5b6000838152600160208181526040928390209091018490558151848152915185927f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc92908290030190a2505050565b600090815260016020526040902060038101546004909101549091565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561122f57600080fd5b505af1158015611243573d6000803e3d6000fd5b505050506040513d602081101561125957600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461127b57600080fd5b60008381526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251908152915185927f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd292908290030190a2505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061134657805160ff1916838001178555611373565b82800160010185558215611373579182015b82811115611373578251825591602001919060010190611358565b5061137f929150611383565b5090565b61139d91905b8082111561137f5760008155600101611389565b905600a165627a7a723058202d83ebac891d5a36b62bc49f24c41dfcfc1b0d3024eaabfa6cc6e9861823767d0029",
  "deployedBytecode": "0x6080604052600436106100c45763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146100c957806310f13a8c146101175780632203ab56146101b557806329cd62ea1461024f5780632dff69411461026d5780633b3b57de1461029757806359d1d43c146102d8578063623195b0146103ab578063691f34311461040b5780637737221314610423578063c3d014d614610481578063c86902331461049c578063d5fa2b00146104cd575b600080fd5b3480156100d557600080fd5b506101037fffffffff00000000000000000000000000000000000000000000000000000000600435166104fe565b604080519115158252519081900360200190f35b34801561012357600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101b395833595369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506107139650505050505050565b005b3480156101c157600080fd5b506101d060043560243561098f565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156102135781810151838201526020016101fb565b50505050905090810190601f1680156102405780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561025b57600080fd5b506101b3600435602435604435610a9b565b34801561027957600080fd5b50610285600435610bcb565b60408051918252519081900360200190f35b3480156102a357600080fd5b506102af600435610be1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102e457600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610336958335953695604494919390910191908190840183828082843750949750610c099650505050505050565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610370578181015183820152602001610358565b50505050905090810190601f16801561039d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b757600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101b3948235946024803595369594606494920191908190840183828082843750949750610d309650505050505050565b34801561041757600080fd5b50610336600435610e61565b34801561042f57600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101b3958335953695604494919390910191908190840183828082843750949750610f059650505050505050565b34801561048d57600080fd5b506101b360043560243561108b565b3480156104a857600080fd5b506104b460043561119c565b6040805192835260208301919091528051918290030190f35b3480156104d957600080fd5b506101b360043573ffffffffffffffffffffffffffffffffffffffff602435166111b9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f3b3b57de00000000000000000000000000000000000000000000000000000000148061059157507fffffffff0000000000000000000000000000000000000000000000000000000082167fd8389dc500000000000000000000000000000000000000000000000000000000145b806105dd57507fffffffff0000000000000000000000000000000000000000000000000000000082167f691f343100000000000000000000000000000000000000000000000000000000145b8061062957507fffffffff0000000000000000000000000000000000000000000000000000000082167f2203ab5600000000000000000000000000000000000000000000000000000000145b8061067557507fffffffff0000000000000000000000000000000000000000000000000000000082167fc869023300000000000000000000000000000000000000000000000000000000145b806106c157507fffffffff0000000000000000000000000000000000000000000000000000000082167f59d1d43c00000000000000000000000000000000000000000000000000000000145b8061070d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050506040513d60208110156107b357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16146107d557600080fd5b6000848152600160209081526040918290209151855185936005019287929182918401908083835b6020831061083a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107fd565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101909320845161087b9591949190910192509050611305565b50826040518082805190602001908083835b602083106108ca57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161088d565b51815160209384036101000a60001901801990921691161790526040805192909401829003822081835289518383015289519096508a95507fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550948a94508392908301919085019080838360005b8381101561094f578181015183820152602001610937565b50505050905090810190601f16801561097c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a350505050565b60008281526001602081905260409091206060905b838311610a8e57828416158015906109dd5750600083815260068201602052604081205460026000196101006001841615020190911604115b15610a8357600083815260068201602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050509150610a93565b6002909202916109a4565b600092505b509250929050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610b1157600080fd5b505af1158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610b5d57600080fd5b604080518082018252848152602080820185815260008881526001835284902092516003840155516004909201919091558151858152908101849052815186927f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46928290030190a250505050565b6000908152600160208190526040909120015490565b60009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600082815260016020908152604091829020915183516060936005019285929182918401908083835b60208310610c6f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c32565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610d235780601f10610cf857610100808354040283529160200191610d23565b820191906000526020600020905b815481529060010190602001808311610d0657829003601f168201915b5050505050905092915050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810187905290518693339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610da657600080fd5b505af1158015610dba573d6000803e3d6000fd5b505050506040513d6020811015610dd057600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610df257600080fd5b6000198301831615610e0357600080fd5b600084815260016020908152604080832086845260060182529091208351610e2d92850190611305565b50604051839085907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a350505050565b6000818152600160208181526040928390206002908101805485516000199582161561010002959095011691909104601f81018390048302840183019094528383526060939091830182828015610ef95780601f10610ece57610100808354040283529160200191610ef9565b820191906000526020600020905b815481529060010190602001808311610edc57829003601f168201915b50505050509050919050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610fc757600080fd5b60008381526001602090815260409091208351610fec92600290920191850190611305565b50604080516020808252845181830152845186937fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f79387939092839283019185019080838360005b8381101561104c578181015183820152602001611034565b50505050905090810190601f1680156110795780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561110157600080fd5b505af1158015611115573d6000803e3d6000fd5b505050506040513d602081101561112b57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461114d57600080fd5b6000838152600160208181526040928390209091018490558151848152915185927f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc92908290030190a2505050565b600090815260016020526040902060038101546004909101549091565b60008054604080517f02571be30000000000000000000000000000000000000000000000000000000081526004810186905290518593339373ffffffffffffffffffffffffffffffffffffffff16926302571be39260248083019360209383900390910190829087803b15801561122f57600080fd5b505af1158015611243573d6000803e3d6000fd5b505050506040513d602081101561125957600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461127b57600080fd5b60008381526001602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558251908152915185927f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd292908290030190a2505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061134657805160ff1916838001178555611373565b82800160010185558215611373579182015b82811115611373578251825591602001919060010190611358565b5061137f929150611383565b5090565b61139d91905b8082111561137f5760008155600101611389565b905600a165627a7a723058202d83ebac891d5a36b62bc49f24c41dfcfc1b0d3024eaabfa6cc6e9861823767d0029",
  "sourceMap": "241:7334:56:-;;;1562:82;8:9:-1;5:2;;;30:1;27;20:12;5:2;1562:82:56;;;;;;;;;;;;;1624:3;:13;;-1:-1:-1;;;;;1624:13:56;;;-1:-1:-1;;;;;;1624:13:56;;;;;;;;;241:7334;;;;;;",
  "deployedSourceMap": "241:7334:56:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1895:440;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1895:440:56;;;;;;;;;;;;;;;;;;;;;;;;;7407:166;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7407:166:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7407:166:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7407:166:56;;;;-1:-1:-1;7407:166:56;-1:-1:-1;7407:166:56;;-1:-1:-1;7407:166:56;;;;;;;;-1:-1:-1;7407:166:56;;-1:-1:-1;7407:166:56;;-1:-1:-1;;;;;;;7407:166:56;;;4924:443;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4924:443:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4924:443:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6619:169;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6619:169:56;;;;;;;;;3276:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3276:113:56;;;;;;;;;;;;;;;;;;;;;2494:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2494:107:56;;;;;;;;;;;;;;;;;;;;;;;;7005:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7005:123:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7005:123:56;;-1:-1:-1;7005:123:56;;-1:-1:-1;;;;;;;7005:123:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7005:123:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5669:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5669:286:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5669:286:56;;-1:-1:-1;5669:286:56;;-1:-1:-1;;;;;;;5669:286:56;4113:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4113:106:56;;;;;4460:143;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4460:143:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4460:143:56;;-1:-1:-1;4460:143:56;;-1:-1:-1;;;;;;;4460:143:56;3760:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3760:153:56;;;;;;;6197:149;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6197:149:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;2827:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2827:144:56;;;;;;;;;1895:440;1963:4;1986:32;;;2001:17;1986:32;;:86;;-1:-1:-1;2037:35:56;;;2052:20;2037:35;1986:86;:137;;;-1:-1:-1;2091:32:56;;;2106:17;2091:32;1986:137;:187;;;-1:-1:-1;2142:31:56;;;2157:16;2142:31;1986:187;:240;;;-1:-1:-1;2192:34:56;;;2207:19;2192:34;1986:240;:291;;;-1:-1:-1;2245:32:56;;;2260:17;2245:32;1986:291;:342;;;-1:-1:-1;2296:32:56;;;2311:17;2296:32;1986:342;1979:349;1895:440;-1:-1:-1;;1895:440:56:o;7407:166::-;1416:3;;;:15;;;;;;;;;;;;;;7475:4;;1435:10;;1416:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1416:15:56;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1416:15:56;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1416:15:56;:29;;;1412:40;;1447:5;;;1412:40;7498:13;;;;:7;:13;;;;;;;;;:23;;;;7524:5;;7498:18;;;7517:3;;7498:23;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7498:23:56;;;;;-1:-1:-1;7498:23:56;;;;;;;;;;;:31;;;;:23;;:31;;;;;-1:-1:-1;7498:31:56;-1:-1:-1;7498:31:56;:::i;:::-;;7557:3;7539:27;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;7539:27:56;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7551:4:56;;-1:-1:-1;7539:27:56;;;;-1:-1:-1;7539:27:56;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7539:27:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7407:166;;;;:::o;4924:443::-;4998:19;5054:13;;;:7;:13;;;;;;;;5019:10;;5077:259;5098:27;;;5077:259;;5165:26;;;5164:33;;;;:72;;-1:-1:-1;5235:1:56;5201:24;;;:11;;;:24;;;;;:31;;-1:-1:-1;;5201:31:56;;;;;;;;;;;:35;5164:72;5160:166;;;5263:24;;;;:11;;;:24;;;;;;;;;5256:31;;;;;;-1:-1:-1;;5256:31:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5263:24;;5256:31;;5263:24;5256:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5305:7;;5160:166;5127:17;;;;;5077:259;;;5359:1;5345:15;;4924:443;;;;;;;:::o;6619:169::-;1416:3;;;:15;;;;;;;;;;;;;;6685:4;;1435:10;;1416:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1416:15:56;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1416:15:56;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1416:15:56;:29;;;1412:40;;1447:5;;;1412:40;6731:15;;;;;;;;;;;;;;;;;;-1:-1:-1;6708:13:56;;;:7;:13;;;;;:38;;:20;;;:38;;;;;;;;;;6756:25;;;;;;;;;;;;;6716:4;;6756:25;;;;;;;;6619:169;;;;:::o;3276:113::-;3332:11;3361:13;;;:7;:13;;;;;;;;:21;;;3276:113::o;2494:107::-;2547:11;2576:13;;;:7;:13;;;;;:18;;;;2494:107::o;7005:123::-;7098:13;;;;:7;:13;;;;;;;;;:23;;;;7070:10;;7098:18;;;7117:3;;7098:23;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;7098:23:56;;;;;;;;;;;;;;;;;;7092:29;;;;274:1:-1;7092:29:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7098:23;;-1:-1:-1;7092:29:56;-1:-1:-1;;7092:29:56;;7098:23;7092:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7005:123;;;;:::o;5669:286::-;1416:3;;;:15;;;;;;;;;;;;;;5743:4;;1435:10;;1416:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1416:15:56;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1416:15:56;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1416:15:56;:29;;;1412:40;;1447:5;;;1412:40;-1:-1:-1;;5817:15:56;;5816:31;;5815:38;5811:49;;5855:5;;;5811:49;5871:13;;;;:7;:13;;;;;;;;:31;;;:18;;:31;;;;;:38;;;;;;;;:::i;:::-;-1:-1:-1;5919:29:56;;5936:11;;5930:4;;5919:29;;;;;5669:286;;;;:::o;4113:106::-;4194:13;;;;:7;:13;;;;;;;;;:18;;;;4188:24;;;;-1:-1:-1;;4188:24:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4166:10;;4194:18;;4188:24;;4194:18;4188:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4113:106;;;:::o;4460:143::-;1416:3;;;:15;;;;;;;;;;;;;;4515:4;;1435:10;;1416:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1416:15:56;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1416:15:56;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1416:15:56;:29;;;1412:40;;1447:5;;;1412:40;4538:13;;;;:7;:13;;;;;;;;:25;;;;:18;;;;;:25;;;;:::i;:::-;-1:-1:-1;4573:23:56;;;;;;;;;;;;;;;4585:4;;4573:23;;4591:4;;4573:23;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4573:23:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4460:143;;;:::o;3760:153::-;1416:3;;;:15;;;;;;;;;;;;;;3819:4;;1435:10;;1416:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1416:15:56;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1416:15:56;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1416:15:56;:29;;;1412:40;;1447:5;;;1412:40;3842:13;;;;:7;:13;;;;;;;;;:21;;;:28;;;3880:26;;;;;;;3850:4;;3880:26;;;;;;;;;3760:153;;;:::o;6197:149::-;6252:9;6292:13;;;:7;:13;;;;;:20;;;:22;6316;;;;;6292;;6197:149::o;2827:144::-;1416:3;;;:15;;;;;;;;;;;;;;2883:4;;1435:10;;1416:29;:3;;:9;;:15;;;;;;;;;;;;;;;;:3;:15;;;5:2:-1;;;;30:1;27;20:12;5:2;1416:15:56;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1416:15:56;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1416:15:56;:29;;;1412:40;;1447:5;;;1412:40;2906:13;;;;:7;:13;;;;;;;;;:25;;;;;;;;;;;;;2941:23;;;;;;;2906:13;;2941:23;;;;;;;;;2827:144;;;:::o;241:7334::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;241:7334:56;;;-1:-1:-1;241:7334:56;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "// See https://github.com/ensdomains/ens/blob/7e377df83f/contracts/PublicResolver.sol\n\npragma solidity ^0.4.0;\n\nimport \"./AbstractENS.sol\";\n\n/**\n * A simple resolver anyone can use; only allows the owner of a node to set its\n * address.\n */\ncontract PublicResolver {\n    bytes4 constant INTERFACE_META_ID = 0x01ffc9a7;\n    bytes4 constant ADDR_INTERFACE_ID = 0x3b3b57de;\n    bytes4 constant CONTENT_INTERFACE_ID = 0xd8389dc5;\n    bytes4 constant NAME_INTERFACE_ID = 0x691f3431;\n    bytes4 constant ABI_INTERFACE_ID = 0x2203ab56;\n    bytes4 constant PUBKEY_INTERFACE_ID = 0xc8690233;\n    bytes4 constant TEXT_INTERFACE_ID = 0x59d1d43c;\n\n    event AddrChanged(bytes32 indexed node, address a);\n    event ContentChanged(bytes32 indexed node, bytes32 hash);\n    event NameChanged(bytes32 indexed node, string name);\n    event ABIChanged(bytes32 indexed node, uint256 indexed contentType);\n    event PubkeyChanged(bytes32 indexed node, bytes32 x, bytes32 y);\n    event TextChanged(bytes32 indexed node, string indexed indexedKey, string key);\n\n    struct PublicKey {\n        bytes32 x;\n        bytes32 y;\n    }\n\n    struct Record {\n        address addr;\n        bytes32 content;\n        string name;\n        PublicKey pubkey;\n        mapping(string=>string) text;\n        mapping(uint256=>bytes) abis;\n    }\n\n    AbstractENS ens;\n    mapping(bytes32=>Record) records;\n\n    modifier only_owner(bytes32 node) {\n        if (ens.owner(node) != msg.sender) throw;\n        _;\n    }\n\n    /**\n     * Constructor.\n     * @param ensAddr The ENS registrar contract.\n     */\n    function PublicResolver(AbstractENS ensAddr) public {\n        ens = ensAddr;\n    }\n\n    /**\n     * Returns true if the resolver implements the interface specified by the provided hash.\n     * @param interfaceID The ID of the interface to check for.\n     * @return True if the contract implements the requested interface.\n     */\n    function supportsInterface(bytes4 interfaceID) public pure returns (bool) {\n        return interfaceID == ADDR_INTERFACE_ID ||\n               interfaceID == CONTENT_INTERFACE_ID ||\n               interfaceID == NAME_INTERFACE_ID ||\n               interfaceID == ABI_INTERFACE_ID ||\n               interfaceID == PUBKEY_INTERFACE_ID ||\n               interfaceID == TEXT_INTERFACE_ID ||\n               interfaceID == INTERFACE_META_ID;\n    }\n\n    /**\n     * Returns the address associated with an ENS node.\n     * @param node The ENS node to query.\n     * @return The associated address.\n     */\n    function addr(bytes32 node) public constant returns (address ret) {\n        ret = records[node].addr;\n    }\n\n    /**\n     * Sets the address associated with an ENS node.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param addr The address to set.\n     */\n    function setAddr(bytes32 node, address addr) only_owner(node) public {\n        records[node].addr = addr;\n        AddrChanged(node, addr);\n    }\n\n    /**\n     * Returns the content hash associated with an ENS node.\n     * Note that this resource type is not standardized, and will likely change\n     * in future to a resource type based on multihash.\n     * @param node The ENS node to query.\n     * @return The associated content hash.\n     */\n    function content(bytes32 node) public constant returns (bytes32 ret) {\n        ret = records[node].content;\n    }\n\n    /**\n     * Sets the content hash associated with an ENS node.\n     * May only be called by the owner of that node in the ENS registry.\n     * Note that this resource type is not standardized, and will likely change\n     * in future to a resource type based on multihash.\n     * @param node The node to update.\n     * @param hash The content hash to set\n     */\n    function setContent(bytes32 node, bytes32 hash) only_owner(node) public {\n        records[node].content = hash;\n        ContentChanged(node, hash);\n    }\n\n    /**\n     * Returns the name associated with an ENS node, for reverse records.\n     * Defined in EIP181.\n     * @param node The ENS node to query.\n     * @return The associated name.\n     */\n    function name(bytes32 node) public constant returns (string ret) {\n        ret = records[node].name;\n    }\n\n    /**\n     * Sets the name associated with an ENS node, for reverse records.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param name The name to set.\n     */\n    function setName(bytes32 node, string name) only_owner(node) public {\n        records[node].name = name;\n        NameChanged(node, name);\n    }\n\n    /**\n     * Returns the ABI associated with an ENS node.\n     * Defined in EIP205.\n     * @param node The ENS node to query\n     * @param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n     * @return contentType The content type of the return value\n     * @return data The ABI data\n     */\n    function ABI(bytes32 node, uint256 contentTypes) public constant returns (uint256 contentType, bytes data) {\n        var record = records[node];\n        for(contentType = 1; contentType <= contentTypes; contentType <<= 1) {\n            if ((contentType & contentTypes) != 0 && record.abis[contentType].length > 0) {\n                data = record.abis[contentType];\n                return;\n            }\n        }\n        contentType = 0;\n    }\n\n    /**\n     * Sets the ABI associated with an ENS node.\n     * Nodes may have one ABI of each content type. To remove an ABI, set it to\n     * the empty string.\n     * @param node The node to update.\n     * @param contentType The content type of the ABI\n     * @param data The ABI data.\n     */\n    function setABI(bytes32 node, uint256 contentType, bytes data) only_owner(node) public {\n        // Content types must be powers of 2\n        if (((contentType - 1) & contentType) != 0) throw;\n\n        records[node].abis[contentType] = data;\n        ABIChanged(node, contentType);\n    }\n\n    /**\n     * Returns the SECP256k1 public key associated with an ENS node.\n     * Defined in EIP 619.\n     * @param node The ENS node to query\n     * @return x, y the X and Y coordinates of the curve point for the public key.\n     */\n    function pubkey(bytes32 node) public constant returns (bytes32 x, bytes32 y) {\n        return (records[node].pubkey.x, records[node].pubkey.y);\n    }\n\n    /**\n     * Sets the SECP256k1 public key associated with an ENS node.\n     * @param node The ENS node to query\n     * @param x the X coordinate of the curve point for the public key.\n     * @param y the Y coordinate of the curve point for the public key.\n     */\n    function setPubkey(bytes32 node, bytes32 x, bytes32 y) only_owner(node) public {\n        records[node].pubkey = PublicKey(x, y);\n        PubkeyChanged(node, x, y);\n    }\n\n    /**\n     * Returns the text data associated with an ENS node and key.\n     * @param node The ENS node to query.\n     * @param key The text data key to query.\n     * @return The associated text data.\n     */\n    function text(bytes32 node, string key) public constant returns (string ret) {\n        ret = records[node].text[key];\n    }\n\n    /**\n     * Sets the text data associated with an ENS node and key.\n     * May only be called by the owner of that node in the ENS registry.\n     * @param node The node to update.\n     * @param key The key to set.\n     * @param value The text data value to set.\n     */\n    function setText(bytes32 node, string key, string value) only_owner(node) public {\n        records[node].text[key] = value;\n        TextChanged(node, key, key);\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/lib/ens/PublicResolver.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/lib/ens/PublicResolver.sol",
    "exportedSymbols": {
      "PublicResolver": [
        9550
      ]
    },
    "id": 9551,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9090,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "87:23:56"
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "file": "./AbstractENS.sol",
        "id": 9091,
        "nodeType": "ImportDirective",
        "scope": 9551,
        "sourceUnit": 8905,
        "src": "112:27:56",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "A simple resolver anyone can use; only allows the owner of a node to set its\naddress.",
        "fullyImplemented": true,
        "id": 9550,
        "linearizedBaseContracts": [
          9550
        ],
        "name": "PublicResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 9094,
            "name": "INTERFACE_META_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "271:46:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9092,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "271:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783031666663396137",
              "id": 9093,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "307:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_33540519_by_1",
                "typeString": "int_const 33540519"
              },
              "value": "0x01ffc9a7"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9097,
            "name": "ADDR_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "323:46:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9095,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "323:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783362336235376465",
              "id": 9096,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "359:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_993744862_by_1",
                "typeString": "int_const 993744862"
              },
              "value": "0x3b3b57de"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9100,
            "name": "CONTENT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "375:49:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9098,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "375:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786438333839646335",
              "id": 9099,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "414:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3627589061_by_1",
                "typeString": "int_const 3627589061"
              },
              "value": "0xd8389dc5"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9103,
            "name": "NAME_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "430:46:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9101,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "430:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783639316633343331",
              "id": 9102,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "466:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1763652657_by_1",
                "typeString": "int_const 1763652657"
              },
              "value": "0x691f3431"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9106,
            "name": "ABI_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "482:45:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9104,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "482:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783232303361623536",
              "id": 9105,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "517:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_570665814_by_1",
                "typeString": "int_const 570665814"
              },
              "value": "0x2203ab56"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9109,
            "name": "PUBKEY_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "533:48:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9107,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "533:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786338363930323333",
              "id": 9108,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "571:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3362325043_by_1",
                "typeString": "int_const 3362325043"
              },
              "value": "0xc8690233"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9112,
            "name": "TEXT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "587:46:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9110,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "587:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783539643164343363",
              "id": 9111,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "623:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1506923580_by_1",
                "typeString": "int_const 1506923580"
              },
              "value": "0x59d1d43c"
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9118,
            "name": "AddrChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9114,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9118,
                  "src": "658:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9113,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9116,
                  "indexed": false,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 9118,
                  "src": "680:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9115,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "680:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "657:33:56"
            },
            "src": "640:51:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9124,
            "name": "ContentChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9123,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9120,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9124,
                  "src": "717:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9119,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "717:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9122,
                  "indexed": false,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 9124,
                  "src": "739:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9121,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "739:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "716:36:56"
            },
            "src": "696:57:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9130,
            "name": "NameChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9129,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9126,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9130,
                  "src": "776:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9125,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9128,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 9130,
                  "src": "798:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9127,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "798:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:35:56"
            },
            "src": "758:53:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9136,
            "name": "ABIChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9132,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9136,
                  "src": "833:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9131,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "833:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9134,
                  "indexed": true,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 9136,
                  "src": "855:27:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "855:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "832:51:56"
            },
            "src": "816:68:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9144,
            "name": "PubkeyChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9143,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9138,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9144,
                  "src": "909:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9137,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "909:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9140,
                  "indexed": false,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 9144,
                  "src": "931:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9139,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "931:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9142,
                  "indexed": false,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 9144,
                  "src": "942:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9141,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "942:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "908:44:56"
            },
            "src": "889:64:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9152,
            "name": "TextChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9146,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9152,
                  "src": "976:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9145,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "976:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9148,
                  "indexed": true,
                  "name": "indexedKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 9152,
                  "src": "998:25:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "998:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9150,
                  "indexed": false,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 9152,
                  "src": "1025:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9149,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1025:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "975:61:56"
            },
            "src": "958:79:56"
          },
          {
            "canonicalName": "PublicResolver.PublicKey",
            "id": 9157,
            "members": [
              {
                "constant": false,
                "id": 9154,
                "name": "x",
                "nodeType": "VariableDeclaration",
                "scope": 9157,
                "src": "1070:9:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 9153,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1070:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9156,
                "name": "y",
                "nodeType": "VariableDeclaration",
                "scope": 9157,
                "src": "1089:9:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 9155,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1089:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "PublicKey",
            "nodeType": "StructDefinition",
            "scope": 9550,
            "src": "1043:62:56",
            "visibility": "public"
          },
          {
            "canonicalName": "PublicResolver.Record",
            "id": 9174,
            "members": [
              {
                "constant": false,
                "id": 9159,
                "name": "addr",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1135:12:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 9158,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1135:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9161,
                "name": "content",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1157:15:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 9160,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1157:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9163,
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1182:11:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9162,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1182:6:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9165,
                "name": "pubkey",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1203:16:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PublicKey_$9157_storage_ptr",
                  "typeString": "struct PublicResolver.PublicKey"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 9164,
                  "name": "PublicKey",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 9157,
                  "src": "1203:9:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PublicKey_$9157_storage_ptr",
                    "typeString": "struct PublicResolver.PublicKey"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9169,
                "name": "text",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1229:28:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                  "typeString": "mapping(string => string)"
                },
                "typeName": {
                  "id": 9168,
                  "keyType": {
                    "id": 9166,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1237:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1229:23:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                    "typeString": "mapping(string => string)"
                  },
                  "valueType": {
                    "id": 9167,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1245:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9173,
                "name": "abis",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1267:28:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                  "typeString": "mapping(uint256 => bytes)"
                },
                "typeName": {
                  "id": 9172,
                  "keyType": {
                    "id": 9170,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1267:23:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                    "typeString": "mapping(uint256 => bytes)"
                  },
                  "valueType": {
                    "id": 9171,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1284:5:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 9550,
            "src": "1111:191:56",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9176,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "1308:15:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractENS_$8904",
              "typeString": "contract AbstractENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 9175,
              "name": "AbstractENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8904,
              "src": "1308:11:56",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractENS_$8904",
                "typeString": "contract AbstractENS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 9180,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "1329:32:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
              "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
            },
            "typeName": {
              "id": 9179,
              "keyType": {
                "id": 9177,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1337:7:56",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1329:24:56",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 9178,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 9174,
                "src": "1346:6:56",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$9174_storage_ptr",
                  "typeString": "struct PublicResolver.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9194,
              "nodeType": "Block",
              "src": "1402:68:56",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 9190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9186,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9182,
                          "src": "1426:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 9184,
                          "name": "ens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9176,
                          "src": "1416:3:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AbstractENS_$8904",
                            "typeString": "contract AbstractENS"
                          }
                        },
                        "id": 9185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 8833,
                        "src": "1416:9:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                          "typeString": "function (bytes32) view external returns (address)"
                        }
                      },
                      "id": 9187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1416:15:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9188,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10404,
                        "src": "1435:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 9189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1435:10:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1416:29:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 9192,
                  "nodeType": "IfStatement",
                  "src": "1412:40:56",
                  "trueBody": {
                    "id": 9191,
                    "nodeType": "Throw",
                    "src": "1447:5:56"
                  }
                },
                {
                  "id": 9193,
                  "nodeType": "PlaceholderStatement",
                  "src": "1462:1:56"
                }
              ]
            },
            "documentation": null,
            "id": 9195,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9182,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9195,
                  "src": "1388:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9181,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1388:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1387:14:56"
            },
            "src": "1368:102:56",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9204,
              "nodeType": "Block",
              "src": "1614:30:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9200,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9176,
                      "src": "1624:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractENS_$8904",
                        "typeString": "contract AbstractENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9201,
                      "name": "ensAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9197,
                      "src": "1630:7:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractENS_$8904",
                        "typeString": "contract AbstractENS"
                      }
                    },
                    "src": "1624:13:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractENS_$8904",
                      "typeString": "contract AbstractENS"
                    }
                  },
                  "id": 9203,
                  "nodeType": "ExpressionStatement",
                  "src": "1624:13:56"
                }
              ]
            },
            "documentation": "Constructor.\n@param ensAddr The ENS registrar contract.",
            "id": 9205,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "PublicResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9197,
                  "name": "ensAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 9205,
                  "src": "1586:19:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractENS_$8904",
                    "typeString": "contract AbstractENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9196,
                    "name": "AbstractENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8904,
                    "src": "1586:11:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractENS_$8904",
                      "typeString": "contract AbstractENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1585:21:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9199,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1614:0:56"
            },
            "scope": 9550,
            "src": "1562:82:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9240,
              "nodeType": "Block",
              "src": "1969:366:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 9238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 9234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 9230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 9222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 9218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 9214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 9212,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9207,
                                  "src": "1986:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 9213,
                                  "name": "ADDR_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9097,
                                  "src": "2001:17:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1986:32:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 9217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 9215,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9207,
                                  "src": "2037:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 9216,
                                  "name": "CONTENT_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9100,
                                  "src": "2052:20:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2037:35:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1986:86:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 9221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9219,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9207,
                                "src": "2091:11:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 9220,
                                "name": "NAME_INTERFACE_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9103,
                                "src": "2106:17:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2091:32:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1986:137:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 9225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 9223,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9207,
                              "src": "2142:11:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9224,
                              "name": "ABI_INTERFACE_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9106,
                              "src": "2157:16:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2142:31:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1986:187:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 9229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9227,
                            "name": "interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9207,
                            "src": "2192:11:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9228,
                            "name": "PUBKEY_INTERFACE_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9109,
                            "src": "2207:19:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "2192:34:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1986:240:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 9233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9231,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9207,
                          "src": "2245:11:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 9232,
                          "name": "TEXT_INTERFACE_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9112,
                          "src": "2260:17:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "2245:32:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1986:291:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 9237,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 9235,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9207,
                        "src": "2296:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 9236,
                        "name": "INTERFACE_META_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9094,
                        "src": "2311:17:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "2296:32:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1986:342:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9211,
                  "id": 9239,
                  "nodeType": "Return",
                  "src": "1979:349:56"
                }
              ]
            },
            "documentation": "Returns true if the resolver implements the interface specified by the provided hash.\n@param interfaceID The ID of the interface to check for.\n@return True if the contract implements the requested interface.",
            "id": 9241,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9208,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9207,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 9241,
                  "src": "1922:18:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9206,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1922:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1921:20:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9210,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9241,
                  "src": "1963:4:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9209,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1963:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1962:6:56"
            },
            "scope": 9550,
            "src": "1895:440:56",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9255,
              "nodeType": "Block",
              "src": "2560:41:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9248,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9246,
                      "src": "2570:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9249,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "2576:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9251,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9250,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9243,
                          "src": "2584:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2576:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9252,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9159,
                      "src": "2576:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2570:24:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9254,
                  "nodeType": "ExpressionStatement",
                  "src": "2570:24:56"
                }
              ]
            },
            "documentation": "Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.",
            "id": 9256,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9244,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9243,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9256,
                  "src": "2508:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9242,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2508:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2507:14:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9246,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9256,
                  "src": "2547:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9245,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2547:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2546:13:56"
            },
            "scope": 9550,
            "src": "2494:107:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9278,
              "nodeType": "Block",
              "src": "2896:75:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9266,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "2906:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9268,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9267,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9258,
                          "src": "2914:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2906:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9269,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9159,
                      "src": "2906:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9270,
                      "name": "addr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9260,
                      "src": "2927:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2906:25:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9272,
                  "nodeType": "ExpressionStatement",
                  "src": "2906:25:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9274,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9258,
                        "src": "2953:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9275,
                        "name": "addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9260,
                        "src": "2959:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9273,
                      "name": "AddrChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9118,
                      "src": "2941:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 9276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2941:23:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9277,
                  "nodeType": "ExpressionStatement",
                  "src": "2941:23:56"
                }
              ]
            },
            "documentation": "Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param addr The address to set.",
            "id": 9279,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9263,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9258,
                    "src": "2883:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9264,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9262,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "2872:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2872:16:56"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9261,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9258,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9279,
                  "src": "2844:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9257,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2844:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9260,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 9279,
                  "src": "2858:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9259,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2858:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2843:28:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9265,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2896:0:56"
            },
            "scope": 9550,
            "src": "2827:144:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9293,
              "nodeType": "Block",
              "src": "3345:44:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9286,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9284,
                      "src": "3355:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9287,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "3361:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9289,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9288,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9281,
                          "src": "3369:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3361:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9290,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9161,
                      "src": "3361:21:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3355:27:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9292,
                  "nodeType": "ExpressionStatement",
                  "src": "3355:27:56"
                }
              ]
            },
            "documentation": "Returns the content hash associated with an ENS node.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The ENS node to query.\n@return The associated content hash.",
            "id": 9294,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9281,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9294,
                  "src": "3293:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9280,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3293:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3292:14:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9284,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9294,
                  "src": "3332:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9283,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3332:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3331:13:56"
            },
            "scope": 9550,
            "src": "3276:113:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9316,
              "nodeType": "Block",
              "src": "3832:81:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9304,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "3842:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9306,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9305,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9296,
                          "src": "3850:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3842:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9307,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9161,
                      "src": "3842:21:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9308,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9298,
                      "src": "3866:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3842:28:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9310,
                  "nodeType": "ExpressionStatement",
                  "src": "3842:28:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9312,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9296,
                        "src": "3895:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9313,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9298,
                        "src": "3901:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9311,
                      "name": "ContentChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9124,
                      "src": "3880:14:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 9314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3880:26:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9315,
                  "nodeType": "ExpressionStatement",
                  "src": "3880:26:56"
                }
              ]
            },
            "documentation": "Sets the content hash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The node to update.\n@param hash The content hash to set",
            "id": 9317,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9301,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9296,
                    "src": "3819:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9302,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9300,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "3808:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3808:16:56"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9296,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9317,
                  "src": "3780:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9295,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3780:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9298,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 9317,
                  "src": "3794:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9297,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3794:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3779:28:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3832:0:56"
            },
            "scope": 9550,
            "src": "3760:153:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9331,
              "nodeType": "Block",
              "src": "4178:41:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9324,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9322,
                      "src": "4188:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9325,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "4194:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9327,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9326,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9319,
                          "src": "4202:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4194:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9328,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9163,
                      "src": "4194:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "src": "4188:24:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 9330,
                  "nodeType": "ExpressionStatement",
                  "src": "4188:24:56"
                }
              ]
            },
            "documentation": "Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.",
            "id": 9332,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9319,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9332,
                  "src": "4127:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9318,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4127:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4126:14:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9322,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9332,
                  "src": "4166:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9321,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4166:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4165:12:56"
            },
            "scope": 9550,
            "src": "4113:106:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9354,
              "nodeType": "Block",
              "src": "4528:75:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9342,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "4538:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9344,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9343,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9334,
                          "src": "4546:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4538:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9345,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9163,
                      "src": "4538:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9346,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9336,
                      "src": "4559:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "4538:25:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 9348,
                  "nodeType": "ExpressionStatement",
                  "src": "4538:25:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9350,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9334,
                        "src": "4585:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9351,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9336,
                        "src": "4591:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9349,
                      "name": "NameChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9130,
                      "src": "4573:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory)"
                      }
                    },
                    "id": 9352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4573:23:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9353,
                  "nodeType": "ExpressionStatement",
                  "src": "4573:23:56"
                }
              ]
            },
            "documentation": "Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.",
            "id": 9355,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9339,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9334,
                    "src": "4515:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9340,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9338,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "4504:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4504:16:56"
              }
            ],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9334,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9355,
                  "src": "4477:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9333,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4477:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9336,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 9355,
                  "src": "4491:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9335,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4491:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4476:27:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4528:0:56"
            },
            "scope": 9550,
            "src": "4460:143:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9412,
              "nodeType": "Block",
              "src": "5031:336:56",
              "statements": [
                {
                  "assignments": [
                    9366
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9366,
                      "name": "record",
                      "nodeType": "VariableDeclaration",
                      "scope": 9413,
                      "src": "5041:10:56",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$9174_storage_ptr",
                        "typeString": "struct PublicResolver.Record"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9370,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 9367,
                      "name": "records",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9180,
                      "src": "5054:7:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                        "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                      }
                    },
                    "id": 9369,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 9368,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9357,
                      "src": "5062:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5054:13:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Record_$9174_storage",
                      "typeString": "struct PublicResolver.Record storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5041:26:56"
                },
                {
                  "body": {
                    "id": 9406,
                    "nodeType": "Block",
                    "src": "5146:190:56",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 9382,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9362,
                                    "src": "5165:11:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 9383,
                                    "name": "contentTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9359,
                                    "src": "5179:12:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5165:26:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9385,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5164:28:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5196:1:56",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5164:33:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9388,
                                    "name": "record",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9366,
                                    "src": "5201:6:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Record_$9174_storage_ptr",
                                      "typeString": "struct PublicResolver.Record storage pointer"
                                    }
                                  },
                                  "id": 9389,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "abis",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9173,
                                  "src": "5201:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint256 => bytes storage ref)"
                                  }
                                },
                                "id": 9391,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 9390,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9362,
                                  "src": "5213:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5201:24:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 9392,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5201:31:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5235:1:56",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5201:35:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5164:72:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 9405,
                        "nodeType": "IfStatement",
                        "src": "5160:166:56",
                        "trueBody": {
                          "id": 9404,
                          "nodeType": "Block",
                          "src": "5238:88:56",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9396,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9364,
                                  "src": "5256:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9397,
                                      "name": "record",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9366,
                                      "src": "5263:6:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$9174_storage_ptr",
                                        "typeString": "struct PublicResolver.Record storage pointer"
                                      }
                                    },
                                    "id": 9398,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "abis",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9173,
                                    "src": "5263:11:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                      "typeString": "mapping(uint256 => bytes storage ref)"
                                    }
                                  },
                                  "id": 9400,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 9399,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9362,
                                    "src": "5275:11:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5263:24:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "5256:31:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 9402,
                              "nodeType": "ExpressionStatement",
                              "src": "5256:31:56"
                            },
                            {
                              "expression": null,
                              "functionReturnParameters": 9365,
                              "id": 9403,
                              "nodeType": "Return",
                              "src": "5305:7:56"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 9375,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9362,
                      "src": "5098:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 9376,
                      "name": "contentTypes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9359,
                      "src": "5113:12:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5098:27:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9407,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 9373,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 9371,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9362,
                        "src": "5081:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 9372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5095:1:56",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5081:15:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9374,
                    "nodeType": "ExpressionStatement",
                    "src": "5081:15:56"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 9380,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 9378,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9362,
                        "src": "5127:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "<<=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 9379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5143:1:56",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5127:17:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9381,
                    "nodeType": "ExpressionStatement",
                    "src": "5127:17:56"
                  },
                  "nodeType": "ForStatement",
                  "src": "5077:259:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9408,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9362,
                      "src": "5345:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 9409,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5359:1:56",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5345:15:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9411,
                  "nodeType": "ExpressionStatement",
                  "src": "5345:15:56"
                }
              ]
            },
            "documentation": "Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data",
            "id": 9413,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9357,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9413,
                  "src": "4937:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9356,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4937:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9359,
                  "name": "contentTypes",
                  "nodeType": "VariableDeclaration",
                  "scope": 9413,
                  "src": "4951:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4951:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4936:36:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9362,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 9413,
                  "src": "4998:19:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4998:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9364,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9413,
                  "src": "5019:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9363,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5019:5:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4997:33:56"
            },
            "scope": 9550,
            "src": "4924:443:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9450,
              "nodeType": "Block",
              "src": "5756:199:56",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9427,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 9425,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9417,
                                  "src": "5817:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 9426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5831:1:56",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5817:15:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 9428,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5816:17:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9429,
                            "name": "contentType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9417,
                            "src": "5836:11:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5816:31:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 9431,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "5815:33:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 9432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5852:1:56",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5815:38:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 9435,
                  "nodeType": "IfStatement",
                  "src": "5811:49:56",
                  "trueBody": {
                    "id": 9434,
                    "nodeType": "Throw",
                    "src": "5855:5:56"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9436,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "5871:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 9438,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9437,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9415,
                            "src": "5879:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5871:13:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$9174_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 9439,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "abis",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9173,
                        "src": "5871:18:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                          "typeString": "mapping(uint256 => bytes storage ref)"
                        }
                      },
                      "id": 9441,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 9440,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9417,
                        "src": "5890:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5871:31:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9442,
                      "name": "data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9419,
                      "src": "5905:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "5871:38:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 9444,
                  "nodeType": "ExpressionStatement",
                  "src": "5871:38:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9446,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9415,
                        "src": "5930:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9447,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9417,
                        "src": "5936:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9445,
                      "name": "ABIChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9136,
                      "src": "5919:10:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 9448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5919:29:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9449,
                  "nodeType": "ExpressionStatement",
                  "src": "5919:29:56"
                }
              ]
            },
            "documentation": "Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.",
            "id": 9451,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9422,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9415,
                    "src": "5743:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9423,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9421,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "5732:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5732:16:56"
              }
            ],
            "name": "setABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9415,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9451,
                  "src": "5685:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9414,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5685:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9417,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 9451,
                  "src": "5699:19:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5699:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9419,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9451,
                  "src": "5720:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9418,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5720:5:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5684:47:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9424,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5756:0:56"
            },
            "scope": 9550,
            "src": "5669:286:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9472,
              "nodeType": "Block",
              "src": "6274:72:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9460,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9180,
                              "src": "6292:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 9462,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 9461,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9453,
                              "src": "6300:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6292:13:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$9174_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 9463,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9165,
                          "src": "6292:20:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$9157_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 9464,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "x",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9154,
                        "src": "6292:22:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9465,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9180,
                              "src": "6316:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 9467,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 9466,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9453,
                              "src": "6324:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6316:13:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$9174_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 9468,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9165,
                          "src": "6316:20:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$9157_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 9469,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "y",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9156,
                        "src": "6316:22:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 9470,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6291:48:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 9459,
                  "id": 9471,
                  "nodeType": "Return",
                  "src": "6284:55:56"
                }
              ]
            },
            "documentation": "Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.",
            "id": 9473,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "pubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9453,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9473,
                  "src": "6213:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9452,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6213:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6212:14:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9459,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9456,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 9473,
                  "src": "6252:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9455,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6252:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9458,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 9473,
                  "src": "6263:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9457,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6263:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6251:22:56"
            },
            "scope": 9550,
            "src": "6197:149:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9501,
              "nodeType": "Block",
              "src": "6698:90:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9485,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "6708:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9487,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9486,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9475,
                          "src": "6716:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6708:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9488,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pubkey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9165,
                      "src": "6708:20:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$9157_storage",
                        "typeString": "struct PublicResolver.PublicKey storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9490,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9477,
                          "src": "6741:1:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 9491,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9479,
                          "src": "6744:1:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 9489,
                        "name": "PublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9157,
                        "src": "6731:9:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_PublicKey_$9157_storage_ptr_$",
                          "typeString": "type(struct PublicResolver.PublicKey storage pointer)"
                        }
                      },
                      "id": 9492,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6731:15:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$9157_memory",
                        "typeString": "struct PublicResolver.PublicKey memory"
                      }
                    },
                    "src": "6708:38:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PublicKey_$9157_storage",
                      "typeString": "struct PublicResolver.PublicKey storage ref"
                    }
                  },
                  "id": 9494,
                  "nodeType": "ExpressionStatement",
                  "src": "6708:38:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9496,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9475,
                        "src": "6770:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9497,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9477,
                        "src": "6776:1:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9498,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9479,
                        "src": "6779:1:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9495,
                      "name": "PubkeyChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9144,
                      "src": "6756:13:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 9499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6756:25:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9500,
                  "nodeType": "ExpressionStatement",
                  "src": "6756:25:56"
                }
              ]
            },
            "documentation": "Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.",
            "id": 9502,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9482,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9475,
                    "src": "6685:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9483,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9481,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "6674:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6674:16:56"
              }
            ],
            "name": "setPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9475,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9502,
                  "src": "6638:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9474,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6638:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9477,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 9502,
                  "src": "6652:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9476,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6652:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9479,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 9502,
                  "src": "6663:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9478,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6663:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6637:36:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6698:0:56"
            },
            "scope": 9550,
            "src": "6619:169:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9520,
              "nodeType": "Block",
              "src": "7082:46:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9511,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9509,
                      "src": "7092:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9512,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "7098:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 9514,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9513,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9504,
                            "src": "7106:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7098:13:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$9174_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 9515,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9169,
                        "src": "7098:18:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 9517,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 9516,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9506,
                        "src": "7117:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7098:23:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "src": "7092:29:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 9519,
                  "nodeType": "ExpressionStatement",
                  "src": "7092:29:56"
                }
              ]
            },
            "documentation": "Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.",
            "id": 9521,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "text",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9504,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9521,
                  "src": "7019:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9503,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7019:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9506,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 9521,
                  "src": "7033:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9505,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7033:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7018:26:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9509,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9521,
                  "src": "7070:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9508,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7070:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7069:12:56"
            },
            "scope": 9550,
            "src": "7005:123:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9548,
              "nodeType": "Block",
              "src": "7488:85:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9533,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "7498:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 9535,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9534,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9523,
                            "src": "7506:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7498:13:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$9174_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 9536,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9169,
                        "src": "7498:18:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 9538,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 9537,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9525,
                        "src": "7517:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7498:23:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9539,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9527,
                      "src": "7524:5:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "7498:31:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 9541,
                  "nodeType": "ExpressionStatement",
                  "src": "7498:31:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9543,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9523,
                        "src": "7551:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9544,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9525,
                        "src": "7557:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9545,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9525,
                        "src": "7562:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9542,
                      "name": "TextChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9152,
                      "src": "7539:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory,string memory)"
                      }
                    },
                    "id": 9546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7539:27:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9547,
                  "nodeType": "ExpressionStatement",
                  "src": "7539:27:56"
                }
              ]
            },
            "documentation": "Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.",
            "id": 9549,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9530,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9523,
                    "src": "7475:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9531,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9529,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "7464:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7464:16:56"
              }
            ],
            "name": "setText",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9523,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "7424:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9522,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7424:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9525,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "7438:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9524,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7438:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9527,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "7450:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9526,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7450:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7423:40:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9532,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7488:0:56"
            },
            "scope": 9550,
            "src": "7407:166:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 9551,
        "src": "241:7334:56"
      }
    ],
    "src": "87:7489:56"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/lib/ens/PublicResolver.sol",
    "exportedSymbols": {
      "PublicResolver": [
        9550
      ]
    },
    "id": 9551,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 9090,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "87:23:56"
      },
      {
        "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
        "file": "./AbstractENS.sol",
        "id": 9091,
        "nodeType": "ImportDirective",
        "scope": 9551,
        "sourceUnit": 8905,
        "src": "112:27:56",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": "A simple resolver anyone can use; only allows the owner of a node to set its\naddress.",
        "fullyImplemented": true,
        "id": 9550,
        "linearizedBaseContracts": [
          9550
        ],
        "name": "PublicResolver",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 9094,
            "name": "INTERFACE_META_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "271:46:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9092,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "271:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783031666663396137",
              "id": 9093,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "307:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_33540519_by_1",
                "typeString": "int_const 33540519"
              },
              "value": "0x01ffc9a7"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9097,
            "name": "ADDR_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "323:46:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9095,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "323:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783362336235376465",
              "id": 9096,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "359:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_993744862_by_1",
                "typeString": "int_const 993744862"
              },
              "value": "0x3b3b57de"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9100,
            "name": "CONTENT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "375:49:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9098,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "375:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786438333839646335",
              "id": 9099,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "414:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3627589061_by_1",
                "typeString": "int_const 3627589061"
              },
              "value": "0xd8389dc5"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9103,
            "name": "NAME_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "430:46:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9101,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "430:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783639316633343331",
              "id": 9102,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "466:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1763652657_by_1",
                "typeString": "int_const 1763652657"
              },
              "value": "0x691f3431"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9106,
            "name": "ABI_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "482:45:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9104,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "482:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783232303361623536",
              "id": 9105,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "517:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_570665814_by_1",
                "typeString": "int_const 570665814"
              },
              "value": "0x2203ab56"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9109,
            "name": "PUBKEY_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "533:48:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9107,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "533:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30786338363930323333",
              "id": 9108,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "571:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3362325043_by_1",
                "typeString": "int_const 3362325043"
              },
              "value": "0xc8690233"
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 9112,
            "name": "TEXT_INTERFACE_ID",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "587:46:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 9110,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "587:6:56",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "30783539643164343363",
              "id": 9111,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "623:10:56",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_1506923580_by_1",
                "typeString": "int_const 1506923580"
              },
              "value": "0x59d1d43c"
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9118,
            "name": "AddrChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9117,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9114,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9118,
                  "src": "658:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9113,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9116,
                  "indexed": false,
                  "name": "a",
                  "nodeType": "VariableDeclaration",
                  "scope": 9118,
                  "src": "680:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9115,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "680:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "657:33:56"
            },
            "src": "640:51:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9124,
            "name": "ContentChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9123,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9120,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9124,
                  "src": "717:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9119,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "717:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9122,
                  "indexed": false,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 9124,
                  "src": "739:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9121,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "739:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "716:36:56"
            },
            "src": "696:57:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9130,
            "name": "NameChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9129,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9126,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9130,
                  "src": "776:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9125,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "776:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9128,
                  "indexed": false,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 9130,
                  "src": "798:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9127,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "798:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "775:35:56"
            },
            "src": "758:53:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9136,
            "name": "ABIChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9132,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9136,
                  "src": "833:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9131,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "833:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9134,
                  "indexed": true,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 9136,
                  "src": "855:27:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "855:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "832:51:56"
            },
            "src": "816:68:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9144,
            "name": "PubkeyChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9143,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9138,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9144,
                  "src": "909:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9137,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "909:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9140,
                  "indexed": false,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 9144,
                  "src": "931:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9139,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "931:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9142,
                  "indexed": false,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 9144,
                  "src": "942:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9141,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "942:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "908:44:56"
            },
            "src": "889:64:56"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 9152,
            "name": "TextChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 9151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9146,
                  "indexed": true,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9152,
                  "src": "976:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9145,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "976:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9148,
                  "indexed": true,
                  "name": "indexedKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 9152,
                  "src": "998:25:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "998:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9150,
                  "indexed": false,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 9152,
                  "src": "1025:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9149,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1025:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "975:61:56"
            },
            "src": "958:79:56"
          },
          {
            "canonicalName": "PublicResolver.PublicKey",
            "id": 9157,
            "members": [
              {
                "constant": false,
                "id": 9154,
                "name": "x",
                "nodeType": "VariableDeclaration",
                "scope": 9157,
                "src": "1070:9:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 9153,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1070:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9156,
                "name": "y",
                "nodeType": "VariableDeclaration",
                "scope": 9157,
                "src": "1089:9:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 9155,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1089:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "PublicKey",
            "nodeType": "StructDefinition",
            "scope": 9550,
            "src": "1043:62:56",
            "visibility": "public"
          },
          {
            "canonicalName": "PublicResolver.Record",
            "id": 9174,
            "members": [
              {
                "constant": false,
                "id": 9159,
                "name": "addr",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1135:12:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 9158,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1135:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9161,
                "name": "content",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1157:15:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 9160,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1157:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9163,
                "name": "name",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1182:11:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9162,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "1182:6:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9165,
                "name": "pubkey",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1203:16:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PublicKey_$9157_storage_ptr",
                  "typeString": "struct PublicResolver.PublicKey"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 9164,
                  "name": "PublicKey",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 9157,
                  "src": "1203:9:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PublicKey_$9157_storage_ptr",
                    "typeString": "struct PublicResolver.PublicKey"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9169,
                "name": "text",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1229:28:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                  "typeString": "mapping(string => string)"
                },
                "typeName": {
                  "id": 9168,
                  "keyType": {
                    "id": 9166,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1237:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1229:23:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                    "typeString": "mapping(string => string)"
                  },
                  "valueType": {
                    "id": 9167,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1245:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 9173,
                "name": "abis",
                "nodeType": "VariableDeclaration",
                "scope": 9174,
                "src": "1267:28:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                  "typeString": "mapping(uint256 => bytes)"
                },
                "typeName": {
                  "id": 9172,
                  "keyType": {
                    "id": 9170,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1267:23:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                    "typeString": "mapping(uint256 => bytes)"
                  },
                  "valueType": {
                    "id": 9171,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1284:5:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Record",
            "nodeType": "StructDefinition",
            "scope": 9550,
            "src": "1111:191:56",
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 9176,
            "name": "ens",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "1308:15:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_AbstractENS_$8904",
              "typeString": "contract AbstractENS"
            },
            "typeName": {
              "contractScope": null,
              "id": 9175,
              "name": "AbstractENS",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8904,
              "src": "1308:11:56",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AbstractENS_$8904",
                "typeString": "contract AbstractENS"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 9180,
            "name": "records",
            "nodeType": "VariableDeclaration",
            "scope": 9550,
            "src": "1329:32:56",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
              "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
            },
            "typeName": {
              "id": 9179,
              "keyType": {
                "id": 9177,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1337:7:56",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1329:24:56",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                "typeString": "mapping(bytes32 => struct PublicResolver.Record)"
              },
              "valueType": {
                "contractScope": null,
                "id": 9178,
                "name": "Record",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 9174,
                "src": "1346:6:56",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Record_$9174_storage_ptr",
                  "typeString": "struct PublicResolver.Record"
                }
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9194,
              "nodeType": "Block",
              "src": "1402:68:56",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 9190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9186,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9182,
                          "src": "1426:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 9184,
                          "name": "ens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9176,
                          "src": "1416:3:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_AbstractENS_$8904",
                            "typeString": "contract AbstractENS"
                          }
                        },
                        "id": 9185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owner",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 8833,
                        "src": "1416:9:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                          "typeString": "function (bytes32) view external returns (address)"
                        }
                      },
                      "id": 9187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1416:15:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 9188,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10404,
                        "src": "1435:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 9189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "1435:10:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1416:29:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 9192,
                  "nodeType": "IfStatement",
                  "src": "1412:40:56",
                  "trueBody": {
                    "id": 9191,
                    "nodeType": "Throw",
                    "src": "1447:5:56"
                  }
                },
                {
                  "id": 9193,
                  "nodeType": "PlaceholderStatement",
                  "src": "1462:1:56"
                }
              ]
            },
            "documentation": null,
            "id": 9195,
            "name": "only_owner",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 9183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9182,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9195,
                  "src": "1388:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9181,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1388:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1387:14:56"
            },
            "src": "1368:102:56",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 9204,
              "nodeType": "Block",
              "src": "1614:30:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9200,
                      "name": "ens",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9176,
                      "src": "1624:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractENS_$8904",
                        "typeString": "contract AbstractENS"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9201,
                      "name": "ensAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9197,
                      "src": "1630:7:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_AbstractENS_$8904",
                        "typeString": "contract AbstractENS"
                      }
                    },
                    "src": "1624:13:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractENS_$8904",
                      "typeString": "contract AbstractENS"
                    }
                  },
                  "id": 9203,
                  "nodeType": "ExpressionStatement",
                  "src": "1624:13:56"
                }
              ]
            },
            "documentation": "Constructor.\n@param ensAddr The ENS registrar contract.",
            "id": 9205,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "PublicResolver",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9197,
                  "name": "ensAddr",
                  "nodeType": "VariableDeclaration",
                  "scope": 9205,
                  "src": "1586:19:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_AbstractENS_$8904",
                    "typeString": "contract AbstractENS"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 9196,
                    "name": "AbstractENS",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8904,
                    "src": "1586:11:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_AbstractENS_$8904",
                      "typeString": "contract AbstractENS"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1585:21:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9199,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1614:0:56"
            },
            "scope": 9550,
            "src": "1562:82:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9240,
              "nodeType": "Block",
              "src": "1969:366:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 9238,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 9234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 9230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 9222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 9218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 9214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 9212,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9207,
                                  "src": "1986:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 9213,
                                  "name": "ADDR_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9097,
                                  "src": "2001:17:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "1986:32:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 9217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 9215,
                                  "name": "interfaceID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9207,
                                  "src": "2037:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 9216,
                                  "name": "CONTENT_INTERFACE_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9100,
                                  "src": "2052:20:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "2037:35:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1986:86:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 9221,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9219,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9207,
                                "src": "2091:11:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 9220,
                                "name": "NAME_INTERFACE_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9103,
                                "src": "2106:17:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "2091:32:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1986:137:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 9225,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 9223,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9207,
                              "src": "2142:11:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9224,
                              "name": "ABI_INTERFACE_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9106,
                              "src": "2157:16:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "2142:31:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1986:187:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 9229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9227,
                            "name": "interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9207,
                            "src": "2192:11:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9228,
                            "name": "PUBKEY_INTERFACE_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9109,
                            "src": "2207:19:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "2192:34:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1986:240:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 9233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 9231,
                          "name": "interfaceID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9207,
                          "src": "2245:11:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 9232,
                          "name": "TEXT_INTERFACE_ID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9112,
                          "src": "2260:17:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "2245:32:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1986:291:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bytes4",
                        "typeString": "bytes4"
                      },
                      "id": 9237,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 9235,
                        "name": "interfaceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9207,
                        "src": "2296:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 9236,
                        "name": "INTERFACE_META_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9094,
                        "src": "2311:17:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      "src": "2296:32:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1986:342:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 9211,
                  "id": 9239,
                  "nodeType": "Return",
                  "src": "1979:349:56"
                }
              ]
            },
            "documentation": "Returns true if the resolver implements the interface specified by the provided hash.\n@param interfaceID The ID of the interface to check for.\n@return True if the contract implements the requested interface.",
            "id": 9241,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "supportsInterface",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9208,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9207,
                  "name": "interfaceID",
                  "nodeType": "VariableDeclaration",
                  "scope": 9241,
                  "src": "1922:18:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 9206,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1922:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1921:20:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9210,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 9241,
                  "src": "1963:4:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 9209,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1963:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1962:6:56"
            },
            "scope": 9550,
            "src": "1895:440:56",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9255,
              "nodeType": "Block",
              "src": "2560:41:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9248,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9246,
                      "src": "2570:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9249,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "2576:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9251,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9250,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9243,
                          "src": "2584:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2576:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9252,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9159,
                      "src": "2576:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2570:24:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9254,
                  "nodeType": "ExpressionStatement",
                  "src": "2570:24:56"
                }
              ]
            },
            "documentation": "Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.",
            "id": 9256,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "addr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9244,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9243,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9256,
                  "src": "2508:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9242,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2508:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2507:14:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9246,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9256,
                  "src": "2547:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9245,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2547:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2546:13:56"
            },
            "scope": 9550,
            "src": "2494:107:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9278,
              "nodeType": "Block",
              "src": "2896:75:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9266,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "2906:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9268,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9267,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9258,
                          "src": "2914:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2906:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9269,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "addr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9159,
                      "src": "2906:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9270,
                      "name": "addr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9260,
                      "src": "2927:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2906:25:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 9272,
                  "nodeType": "ExpressionStatement",
                  "src": "2906:25:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9274,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9258,
                        "src": "2953:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9275,
                        "name": "addr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9260,
                        "src": "2959:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 9273,
                      "name": "AddrChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9118,
                      "src": "2941:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 9276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2941:23:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9277,
                  "nodeType": "ExpressionStatement",
                  "src": "2941:23:56"
                }
              ]
            },
            "documentation": "Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param addr The address to set.",
            "id": 9279,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9263,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9258,
                    "src": "2883:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9264,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9262,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "2872:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2872:16:56"
              }
            ],
            "name": "setAddr",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9261,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9258,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9279,
                  "src": "2844:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9257,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2844:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9260,
                  "name": "addr",
                  "nodeType": "VariableDeclaration",
                  "scope": 9279,
                  "src": "2858:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9259,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2858:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2843:28:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9265,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2896:0:56"
            },
            "scope": 9550,
            "src": "2827:144:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9293,
              "nodeType": "Block",
              "src": "3345:44:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9291,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9286,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9284,
                      "src": "3355:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9287,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "3361:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9289,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9288,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9281,
                          "src": "3369:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3361:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9290,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9161,
                      "src": "3361:21:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3355:27:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9292,
                  "nodeType": "ExpressionStatement",
                  "src": "3355:27:56"
                }
              ]
            },
            "documentation": "Returns the content hash associated with an ENS node.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The ENS node to query.\n@return The associated content hash.",
            "id": 9294,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "content",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9281,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9294,
                  "src": "3293:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9280,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3293:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3292:14:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9284,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9294,
                  "src": "3332:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9283,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3332:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3331:13:56"
            },
            "scope": 9550,
            "src": "3276:113:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9316,
              "nodeType": "Block",
              "src": "3832:81:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9309,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9304,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "3842:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9306,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9305,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9296,
                          "src": "3850:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3842:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9307,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "content",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9161,
                      "src": "3842:21:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9308,
                      "name": "hash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9298,
                      "src": "3866:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "3842:28:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 9310,
                  "nodeType": "ExpressionStatement",
                  "src": "3842:28:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9312,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9296,
                        "src": "3895:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9313,
                        "name": "hash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9298,
                        "src": "3901:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9311,
                      "name": "ContentChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9124,
                      "src": "3880:14:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32)"
                      }
                    },
                    "id": 9314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3880:26:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9315,
                  "nodeType": "ExpressionStatement",
                  "src": "3880:26:56"
                }
              ]
            },
            "documentation": "Sets the content hash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\nNote that this resource type is not standardized, and will likely change\nin future to a resource type based on multihash.\n@param node The node to update.\n@param hash The content hash to set",
            "id": 9317,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9301,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9296,
                    "src": "3819:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9302,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9300,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "3808:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3808:16:56"
              }
            ],
            "name": "setContent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9296,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9317,
                  "src": "3780:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9295,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3780:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9298,
                  "name": "hash",
                  "nodeType": "VariableDeclaration",
                  "scope": 9317,
                  "src": "3794:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9297,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3794:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3779:28:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3832:0:56"
            },
            "scope": 9550,
            "src": "3760:153:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9331,
              "nodeType": "Block",
              "src": "4178:41:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9324,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9322,
                      "src": "4188:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9325,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "4194:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9327,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9326,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9319,
                          "src": "4202:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4194:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9328,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9163,
                      "src": "4194:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "src": "4188:24:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 9330,
                  "nodeType": "ExpressionStatement",
                  "src": "4188:24:56"
                }
              ]
            },
            "documentation": "Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.",
            "id": 9332,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "name",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9319,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9332,
                  "src": "4127:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9318,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4127:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4126:14:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9322,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9332,
                  "src": "4166:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9321,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4166:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4165:12:56"
            },
            "scope": 9550,
            "src": "4113:106:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9354,
              "nodeType": "Block",
              "src": "4528:75:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9342,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "4538:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9344,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9343,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9334,
                          "src": "4546:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4538:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9345,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "name",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9163,
                      "src": "4538:18:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9346,
                      "name": "name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9336,
                      "src": "4559:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "4538:25:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 9348,
                  "nodeType": "ExpressionStatement",
                  "src": "4538:25:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9350,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9334,
                        "src": "4585:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9351,
                        "name": "name",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9336,
                        "src": "4591:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9349,
                      "name": "NameChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9130,
                      "src": "4573:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory)"
                      }
                    },
                    "id": 9352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4573:23:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9353,
                  "nodeType": "ExpressionStatement",
                  "src": "4573:23:56"
                }
              ]
            },
            "documentation": "Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.",
            "id": 9355,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9339,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9334,
                    "src": "4515:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9340,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9338,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "4504:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4504:16:56"
              }
            ],
            "name": "setName",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9337,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9334,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9355,
                  "src": "4477:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9333,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4477:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9336,
                  "name": "name",
                  "nodeType": "VariableDeclaration",
                  "scope": 9355,
                  "src": "4491:11:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9335,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4491:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4476:27:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4528:0:56"
            },
            "scope": 9550,
            "src": "4460:143:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9412,
              "nodeType": "Block",
              "src": "5031:336:56",
              "statements": [
                {
                  "assignments": [
                    9366
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 9366,
                      "name": "record",
                      "nodeType": "VariableDeclaration",
                      "scope": 9413,
                      "src": "5041:10:56",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$9174_storage_ptr",
                        "typeString": "struct PublicResolver.Record"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 9370,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 9367,
                      "name": "records",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9180,
                      "src": "5054:7:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                        "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                      }
                    },
                    "id": 9369,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 9368,
                      "name": "node",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9357,
                      "src": "5062:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5054:13:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Record_$9174_storage",
                      "typeString": "struct PublicResolver.Record storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5041:26:56"
                },
                {
                  "body": {
                    "id": 9406,
                    "nodeType": "Block",
                    "src": "5146:190:56",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 9382,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9362,
                                    "src": "5165:11:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 9383,
                                    "name": "contentTypes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9359,
                                    "src": "5179:12:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5165:26:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9385,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5164:28:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5196:1:56",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5164:33:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9394,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9388,
                                    "name": "record",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9366,
                                    "src": "5201:6:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Record_$9174_storage_ptr",
                                      "typeString": "struct PublicResolver.Record storage pointer"
                                    }
                                  },
                                  "id": 9389,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "abis",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 9173,
                                  "src": "5201:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                    "typeString": "mapping(uint256 => bytes storage ref)"
                                  }
                                },
                                "id": 9391,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 9390,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9362,
                                  "src": "5213:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5201:24:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              },
                              "id": 9392,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5201:31:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 9393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5235:1:56",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5201:35:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5164:72:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 9405,
                        "nodeType": "IfStatement",
                        "src": "5160:166:56",
                        "trueBody": {
                          "id": 9404,
                          "nodeType": "Block",
                          "src": "5238:88:56",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 9401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 9396,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9364,
                                  "src": "5256:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 9397,
                                      "name": "record",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9366,
                                      "src": "5263:6:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$9174_storage_ptr",
                                        "typeString": "struct PublicResolver.Record storage pointer"
                                      }
                                    },
                                    "id": 9398,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "abis",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 9173,
                                    "src": "5263:11:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                                      "typeString": "mapping(uint256 => bytes storage ref)"
                                    }
                                  },
                                  "id": 9400,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 9399,
                                    "name": "contentType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9362,
                                    "src": "5275:11:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5263:24:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage",
                                    "typeString": "bytes storage ref"
                                  }
                                },
                                "src": "5256:31:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 9402,
                              "nodeType": "ExpressionStatement",
                              "src": "5256:31:56"
                            },
                            {
                              "expression": null,
                              "functionReturnParameters": 9365,
                              "id": 9403,
                              "nodeType": "Return",
                              "src": "5305:7:56"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 9375,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9362,
                      "src": "5098:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 9376,
                      "name": "contentTypes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9359,
                      "src": "5113:12:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5098:27:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 9407,
                  "initializationExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 9373,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 9371,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9362,
                        "src": "5081:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 9372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5095:1:56",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5081:15:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9374,
                    "nodeType": "ExpressionStatement",
                    "src": "5081:15:56"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 9380,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 9378,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9362,
                        "src": "5127:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "<<=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 9379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5143:1:56",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "5127:17:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 9381,
                    "nodeType": "ExpressionStatement",
                    "src": "5127:17:56"
                  },
                  "nodeType": "ForStatement",
                  "src": "5077:259:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9410,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9408,
                      "name": "contentType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9362,
                      "src": "5345:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 9409,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5359:1:56",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5345:15:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 9411,
                  "nodeType": "ExpressionStatement",
                  "src": "5345:15:56"
                }
              ]
            },
            "documentation": "Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data",
            "id": 9413,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "ABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9357,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9413,
                  "src": "4937:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9356,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4937:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9359,
                  "name": "contentTypes",
                  "nodeType": "VariableDeclaration",
                  "scope": 9413,
                  "src": "4951:20:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4951:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4936:36:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9365,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9362,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 9413,
                  "src": "4998:19:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9361,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4998:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9364,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9413,
                  "src": "5019:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9363,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5019:5:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4997:33:56"
            },
            "scope": 9550,
            "src": "4924:443:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9450,
              "nodeType": "Block",
              "src": "5756:199:56",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 9433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9427,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 9425,
                                  "name": "contentType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9417,
                                  "src": "5817:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 9426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5831:1:56",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "5817:15:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 9428,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5816:17:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 9429,
                            "name": "contentType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9417,
                            "src": "5836:11:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5816:31:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 9431,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "5815:33:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 9432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5852:1:56",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5815:38:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 9435,
                  "nodeType": "IfStatement",
                  "src": "5811:49:56",
                  "trueBody": {
                    "id": 9434,
                    "nodeType": "Throw",
                    "src": "5855:5:56"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9436,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "5871:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 9438,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9437,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9415,
                            "src": "5879:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5871:13:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$9174_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 9439,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "abis",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9173,
                        "src": "5871:18:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_bytes_storage_$",
                          "typeString": "mapping(uint256 => bytes storage ref)"
                        }
                      },
                      "id": 9441,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 9440,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9417,
                        "src": "5890:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5871:31:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9442,
                      "name": "data",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9419,
                      "src": "5905:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "5871:38:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 9444,
                  "nodeType": "ExpressionStatement",
                  "src": "5871:38:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9446,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9415,
                        "src": "5930:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9447,
                        "name": "contentType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9417,
                        "src": "5936:11:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 9445,
                      "name": "ABIChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9136,
                      "src": "5919:10:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,uint256)"
                      }
                    },
                    "id": 9448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5919:29:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9449,
                  "nodeType": "ExpressionStatement",
                  "src": "5919:29:56"
                }
              ]
            },
            "documentation": "Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.",
            "id": 9451,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9422,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9415,
                    "src": "5743:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9423,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9421,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "5732:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5732:16:56"
              }
            ],
            "name": "setABI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9415,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9451,
                  "src": "5685:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9414,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5685:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9417,
                  "name": "contentType",
                  "nodeType": "VariableDeclaration",
                  "scope": 9451,
                  "src": "5699:19:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5699:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9419,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 9451,
                  "src": "5720:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 9418,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5720:5:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5684:47:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9424,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5756:0:56"
            },
            "scope": 9550,
            "src": "5669:286:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9472,
              "nodeType": "Block",
              "src": "6274:72:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9460,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9180,
                              "src": "6292:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 9462,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 9461,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9453,
                              "src": "6300:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6292:13:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$9174_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 9463,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9165,
                          "src": "6292:20:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$9157_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 9464,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "x",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9154,
                        "src": "6292:22:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9465,
                              "name": "records",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9180,
                              "src": "6316:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                                "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                              }
                            },
                            "id": 9467,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 9466,
                              "name": "node",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9453,
                              "src": "6324:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6316:13:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$9174_storage",
                              "typeString": "struct PublicResolver.Record storage ref"
                            }
                          },
                          "id": 9468,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pubkey",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 9165,
                          "src": "6316:20:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PublicKey_$9157_storage",
                            "typeString": "struct PublicResolver.PublicKey storage ref"
                          }
                        },
                        "id": 9469,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "y",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9156,
                        "src": "6316:22:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "id": 9470,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6291:48:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                      "typeString": "tuple(bytes32,bytes32)"
                    }
                  },
                  "functionReturnParameters": 9459,
                  "id": 9471,
                  "nodeType": "Return",
                  "src": "6284:55:56"
                }
              ]
            },
            "documentation": "Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.",
            "id": 9473,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "pubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9453,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9473,
                  "src": "6213:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9452,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6213:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6212:14:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9459,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9456,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 9473,
                  "src": "6252:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9455,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6252:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9458,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 9473,
                  "src": "6263:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9457,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6263:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6251:22:56"
            },
            "scope": 9550,
            "src": "6197:149:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9501,
              "nodeType": "Block",
              "src": "6698:90:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9493,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 9485,
                          "name": "records",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9180,
                          "src": "6708:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                            "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                          }
                        },
                        "id": 9487,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 9486,
                          "name": "node",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9475,
                          "src": "6716:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6708:13:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Record_$9174_storage",
                          "typeString": "struct PublicResolver.Record storage ref"
                        }
                      },
                      "id": 9488,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "pubkey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9165,
                      "src": "6708:20:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$9157_storage",
                        "typeString": "struct PublicResolver.PublicKey storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 9490,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9477,
                          "src": "6741:1:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 9491,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9479,
                          "src": "6744:1:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 9489,
                        "name": "PublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9157,
                        "src": "6731:9:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_PublicKey_$9157_storage_ptr_$",
                          "typeString": "type(struct PublicResolver.PublicKey storage pointer)"
                        }
                      },
                      "id": 9492,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6731:15:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_PublicKey_$9157_memory",
                        "typeString": "struct PublicResolver.PublicKey memory"
                      }
                    },
                    "src": "6708:38:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_PublicKey_$9157_storage",
                      "typeString": "struct PublicResolver.PublicKey storage ref"
                    }
                  },
                  "id": 9494,
                  "nodeType": "ExpressionStatement",
                  "src": "6708:38:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9496,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9475,
                        "src": "6770:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9497,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9477,
                        "src": "6776:1:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9498,
                        "name": "y",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9479,
                        "src": "6779:1:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 9495,
                      "name": "PubkeyChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9144,
                      "src": "6756:13:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32)"
                      }
                    },
                    "id": 9499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6756:25:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9500,
                  "nodeType": "ExpressionStatement",
                  "src": "6756:25:56"
                }
              ]
            },
            "documentation": "Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.",
            "id": 9502,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9482,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9475,
                    "src": "6685:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9483,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9481,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "6674:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6674:16:56"
              }
            ],
            "name": "setPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9475,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9502,
                  "src": "6638:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9474,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6638:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9477,
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "scope": 9502,
                  "src": "6652:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9476,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6652:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9479,
                  "name": "y",
                  "nodeType": "VariableDeclaration",
                  "scope": 9502,
                  "src": "6663:9:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9478,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6663:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6637:36:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6698:0:56"
            },
            "scope": 9550,
            "src": "6619:169:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9520,
              "nodeType": "Block",
              "src": "7082:46:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 9511,
                      "name": "ret",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9509,
                      "src": "7092:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9512,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "7098:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 9514,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9513,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9504,
                            "src": "7106:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7098:13:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$9174_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 9515,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9169,
                        "src": "7098:18:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 9517,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 9516,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9506,
                        "src": "7117:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7098:23:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "src": "7092:29:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "id": 9519,
                  "nodeType": "ExpressionStatement",
                  "src": "7092:29:56"
                }
              ]
            },
            "documentation": "Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.",
            "id": 9521,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "text",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9507,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9504,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9521,
                  "src": "7019:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9503,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7019:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9506,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 9521,
                  "src": "7033:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9505,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7033:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7018:26:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9509,
                  "name": "ret",
                  "nodeType": "VariableDeclaration",
                  "scope": 9521,
                  "src": "7070:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9508,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7070:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7069:12:56"
            },
            "scope": 9550,
            "src": "7005:123:56",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 9548,
              "nodeType": "Block",
              "src": "7488:85:56",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 9540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9533,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9180,
                            "src": "7498:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Record_$9174_storage_$",
                              "typeString": "mapping(bytes32 => struct PublicResolver.Record storage ref)"
                            }
                          },
                          "id": 9535,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9534,
                            "name": "node",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9523,
                            "src": "7506:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7498:13:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$9174_storage",
                            "typeString": "struct PublicResolver.Record storage ref"
                          }
                        },
                        "id": 9536,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "text",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 9169,
                        "src": "7498:18:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                          "typeString": "mapping(string memory => string storage ref)"
                        }
                      },
                      "id": 9538,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 9537,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9525,
                        "src": "7517:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7498:23:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 9539,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9527,
                      "src": "7524:5:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "7498:31:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 9541,
                  "nodeType": "ExpressionStatement",
                  "src": "7498:31:56"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 9543,
                        "name": "node",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9523,
                        "src": "7551:4:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9544,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9525,
                        "src": "7557:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 9545,
                        "name": "key",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9525,
                        "src": "7562:3:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 9542,
                      "name": "TextChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9152,
                      "src": "7539:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,string memory,string memory)"
                      }
                    },
                    "id": 9546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7539:27:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 9547,
                  "nodeType": "ExpressionStatement",
                  "src": "7539:27:56"
                }
              ]
            },
            "documentation": "Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.",
            "id": 9549,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 9530,
                    "name": "node",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9523,
                    "src": "7475:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 9531,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 9529,
                  "name": "only_owner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 9195,
                  "src": "7464:10:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "7464:16:56"
              }
            ],
            "name": "setText",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 9528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 9523,
                  "name": "node",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "7424:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 9522,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7424:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9525,
                  "name": "key",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "7438:10:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9524,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7438:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9527,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 9549,
                  "src": "7450:12:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 9526,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7450:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7423:40:56"
            },
            "payable": false,
            "returnParameters": {
              "id": 9532,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7488:0:56"
            },
            "scope": 9550,
            "src": "7407:166:56",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 9551,
        "src": "241:7334:56"
      }
    ],
    "src": "87:7489:56"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.2.0",
  "updatedAt": "2020-06-07T23:27:00.613Z",
  "devdoc": {
    "methods": {
      "ABI(bytes32,uint256)": {
        "params": {
          "contentTypes": "A bitwise OR of the ABI formats accepted by the caller.",
          "node": "The ENS node to query"
        },
        "return": "contentType The content type of the return valuedata The ABI data"
      },
      "addr(bytes32)": {
        "params": {
          "node": "The ENS node to query."
        },
        "return": "The associated address."
      },
      "content(bytes32)": {
        "params": {
          "node": "The ENS node to query."
        },
        "return": "The associated content hash."
      },
      "name(bytes32)": {
        "params": {
          "node": "The ENS node to query."
        },
        "return": "The associated name."
      },
      "pubkey(bytes32)": {
        "params": {
          "node": "The ENS node to query"
        },
        "return": "x, y the X and Y coordinates of the curve point for the public key."
      },
      "setABI(bytes32,uint256,bytes)": {
        "params": {
          "contentType": "The content type of the ABI",
          "data": "The ABI data.",
          "node": "The node to update."
        }
      },
      "setAddr(bytes32,address)": {
        "params": {
          "addr": "The address to set.",
          "node": "The node to update."
        }
      },
      "setContent(bytes32,bytes32)": {
        "params": {
          "hash": "The content hash to set",
          "node": "The node to update."
        }
      },
      "setName(bytes32,string)": {
        "params": {
          "name": "The name to set.",
          "node": "The node to update."
        }
      },
      "setPubkey(bytes32,bytes32,bytes32)": {
        "params": {
          "node": "The ENS node to query",
          "x": "the X coordinate of the curve point for the public key.",
          "y": "the Y coordinate of the curve point for the public key."
        }
      },
      "setText(bytes32,string,string)": {
        "params": {
          "key": "The key to set.",
          "node": "The node to update.",
          "value": "The text data value to set."
        }
      },
      "supportsInterface(bytes4)": {
        "params": {
          "interfaceID": "The ID of the interface to check for."
        },
        "return": "True if the contract implements the requested interface."
      },
      "text(bytes32,string)": {
        "params": {
          "key": "The text data key to query.",
          "node": "The ENS node to query."
        },
        "return": "The associated text data."
      }
    }
  },
  "userdoc": {
    "methods": {
      "ABI(bytes32,uint256)": {
        "notice": "Returns the ABI associated with an ENS node. Defined in EIP205."
      },
      "addr(bytes32)": {
        "notice": "Returns the address associated with an ENS node."
      },
      "content(bytes32)": {
        "notice": "Returns the content hash associated with an ENS node. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash."
      },
      "name(bytes32)": {
        "notice": "Returns the name associated with an ENS node, for reverse records. Defined in EIP181."
      },
      "pubkey(bytes32)": {
        "notice": "Returns the SECP256k1 public key associated with an ENS node. Defined in EIP 619."
      },
      "setABI(bytes32,uint256,bytes)": {
        "notice": "Sets the ABI associated with an ENS node. Nodes may have one ABI of each content type. To remove an ABI, set it to the empty string."
      },
      "setAddr(bytes32,address)": {
        "notice": "Sets the address associated with an ENS node. May only be called by the owner of that node in the ENS registry."
      },
      "setContent(bytes32,bytes32)": {
        "notice": "Sets the content hash associated with an ENS node. May only be called by the owner of that node in the ENS registry. Note that this resource type is not standardized, and will likely change in future to a resource type based on multihash."
      },
      "setName(bytes32,string)": {
        "notice": "Sets the name associated with an ENS node, for reverse records. May only be called by the owner of that node in the ENS registry."
      },
      "setPubkey(bytes32,bytes32,bytes32)": {
        "notice": "Sets the SECP256k1 public key associated with an ENS node."
      },
      "setText(bytes32,string,string)": {
        "notice": "Sets the text data associated with an ENS node and key. May only be called by the owner of that node in the ENS registry."
      },
      "supportsInterface(bytes4)": {
        "notice": "Returns true if the resolver implements the interface specified by the provided hash."
      },
      "text(bytes32,string)": {
        "notice": "Returns the text data associated with an ENS node and key."
      }
    }
  }
}