docs: def parse_complex_fault_geometry(node):
      """
      Parses a complex fault geometry node returning both the attributes and
      parameters in a dictionary
      """
      assert "complexFaultGeometry" in node.tag
      # Get general attributes
      geometry = {"intermediateEdges": []}
      for subnode in node:
          crds = subnode.nodes[0].nodes[0].text
          if "faultTopEdge" in subnode.tag:
              geometry["faultTopEdge"] = numpy.array(
                  [[crds[i], crds[i + 1], crds[i + 2]]
                   for i in range(0, len(crds), 3)])
              geometry["upperSeismoDepth"] = numpy.min(
                  geometry["faultTopEdge"][:, 2])
          elif "faultBottomEdge" in subnode.tag:
  
              geometry["faultBottomEdge"] = numpy.array(
                  [[crds[i], crds[i + 1], crds[i + 2]]
                   for i in range(0, len(crds), 3)])
              geometry["lowerSeismoDepth"] = numpy.max(
                  geometry["faultBottomEdge"][:, 2])
          elif "intermediateEdge" in subnode.tag:
              geometry["intermediateEdges"].append(
                  numpy.array([[crds[i], crds[i + 1], crds[i + 2]]
                               for i in range(0, len(crds), 3)]))
          else:
              pass
      geometry["dip"] = None
      return geometry