---
Function {
 argument: None,
 arguments: FunctionArguments {
  arguments: [
   FunctionArgument {
    identifier: "lib",
    default: None,
   },
   FunctionArgument {
    identifier: "pkgs",
    default: None,
   },
   FunctionArgument {
    identifier: "config",
    default: None,
   },
  ],
  ellipsis: true,
 },
 definition: With {
  expression: Variable {
   identifier: "lib",
   position: (3, 6),
  },
  target: LetIn {
   bindings: [
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "cfg",
        position: (6, 3),
       },
      ],
     },
     PropertyAccess {
      expression: Variable {
       identifier: "config",
       position: (6, 9),
      },
      attribute_path: AttributePath {
       attributes: [
        Raw {
         content: "services",
         position: (6, 16),
        },
        Raw {
         content: "prometheus",
         position: (6, 25),
        },
       ],
      },
      default: None,
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "workingDir",
        position: (8, 3),
       },
      ],
     },
     BinaryOperation {
      operator: Addition,
      operands: [
       String {
        parts: [
         Raw {
          content: "/var/lib/",
          position: (8, 17),
         },
        ],
       },
       PropertyAccess {
        expression: Variable {
         identifier: "cfg",
         position: (8, 30),
        },
        attribute_path: AttributePath {
         attributes: [
          Raw {
           content: "stateDir",
           position: (8, 34),
          },
         ],
        },
        default: None,
       },
      ],
      position: (8, 28),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "prometheusYmlOut",
        position: (10, 3),
       },
      ],
     },
     String {
      parts: [
       Expression {
        expression: Variable {
         identifier: "workingDir",
         position: (10, 25),
        },
       },
       Raw {
        content: "/prometheus-substituted.yaml",
        position: (10, 36),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "triggerReload",
        position: (12, 3),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "pkgs",
        position: (12, 19),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "writeShellScriptBin",
          position: (12, 24),
         },
        ],
       },
       default: None,
      },
      arguments: [
       String {
        parts: [
         Raw {
          content: "trigger-reload-prometheus",
          position: (12, 45),
         },
        ],
       },
       String {
        parts: [
         Raw {
          content: "PATH=\"",
          position: (13, 1),
         },
         Expression {
          expression: FunctionApplication {
           function: Variable {
            identifier: "makeBinPath",
            position: (13, 13),
           },
           arguments: [
            With {
             expression: Variable {
              identifier: "pkgs",
              position: (13, 31),
             },
             target: List {
              elements: [
               Variable {
                identifier: "systemd",
                position: (13, 39),
               },
              ],
              position: (13, 37),
             },
             position: (13, 26),
            },
           ],
          },
         },
         Raw {
          content: "\"\nif systemctl -q is-active prometheus.service; then\n  systemctl reload prometheus.service\nfi\n",
          position: (13, 50),
         },
        ],
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "reload",
        position: (19, 3),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "pkgs",
        position: (19, 12),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "writeShellScriptBin",
          position: (19, 17),
         },
        ],
       },
       default: None,
      },
      arguments: [
       String {
        parts: [
         Raw {
          content: "reload-prometheus",
          position: (19, 38),
         },
        ],
       },
       String {
        parts: [
         Raw {
          content: "PATH=\"",
          position: (20, 1),
         },
         Expression {
          expression: FunctionApplication {
           function: Variable {
            identifier: "makeBinPath",
            position: (20, 13),
           },
           arguments: [
            With {
             expression: Variable {
              identifier: "pkgs",
              position: (20, 31),
             },
             target: List {
              elements: [
               Variable {
                identifier: "systemd",
                position: (20, 39),
               },
               Variable {
                identifier: "coreutils",
                position: (20, 47),
               },
               Variable {
                identifier: "gnugrep",
                position: (20, 57),
               },
              ],
              position: (20, 37),
             },
             position: (20, 26),
            },
           ],
          },
         },
         Raw {
          content: "\"\ncursor=$(journalctl --show-cursor -n0 | grep -oP \"cursor: \\K.*\")\nkill -HUP $MAINPID\njournalctl -u prometheus.service --after-cursor=\"$cursor\" -f \\\n  | grep -m 1 \"Completed loading of configuration file\" > /dev/null\n",
          position: (20, 68),
         },
        ],
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promtoolCheck",
        position: (28, 3),
       },
      ],
     },
     Function {
      argument: Some(
       "what",
      ),
      arguments: FunctionArguments {
       arguments: [],
       ellipsis: false,
      },
      definition: Function {
       argument: Some(
        "name",
       ),
       arguments: FunctionArguments {
        arguments: [],
        ellipsis: false,
       },
       definition: Function {
        argument: Some(
         "file",
        ),
        arguments: FunctionArguments {
         arguments: [],
         ellipsis: false,
        },
        definition: IfThenElse {
         predicate: PropertyAccess {
          expression: Variable {
           identifier: "cfg",
           position: (29, 8),
          },
          attribute_path: AttributePath {
           attributes: [
            Raw {
             content: "checkConfig",
             position: (29, 12),
            },
           ],
          },
          default: None,
         },
         then: FunctionApplication {
          function: PropertyAccess {
           expression: Variable {
            identifier: "pkgs",
            position: (30, 7),
           },
           attribute_path: AttributePath {
            attributes: [
             Raw {
              content: "runCommandLocal",
              position: (30, 12),
             },
            ],
           },
           default: None,
          },
          arguments: [
           String {
            parts: [
             Expression {
              expression: Variable {
               identifier: "name",
               position: (31, 12),
              },
             },
             Raw {
              content: "-",
              position: (31, 17),
             },
             Expression {
              expression: FunctionApplication {
               function: Variable {
                identifier: "replaceStrings",
                position: (31, 20),
               },
               arguments: [
                List {
                 elements: [
                  String {
                   parts: [
                    Raw {
                     content: " ",
                     position: (31, 37),
                    },
                   ],
                  },
                 ],
                 position: (31, 35),
                },
                List {
                 elements: [
                  String {
                   parts: [],
                  },
                 ],
                 position: (31, 41),
                },
                Variable {
                 identifier: "what",
                 position: (31, 46),
                },
               ],
              },
             },
             Raw {
              content: "-checked",
              position: (31, 51),
             },
            ],
           },
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "buildInputs",
                 position: (32, 11),
                },
               ],
              },
              List {
               elements: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "cfg",
                  position: (32, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "package",
                    position: (32, 31),
                   },
                  ],
                 },
                 default: None,
                },
               ],
               position: (32, 25),
              },
             ),
            ],
            recursive: false,
            position: (32, 9),
           },
           String {
            parts: [
             Raw {
              content: "ln -s ",
              position: (33, 1),
             },
             Expression {
              expression: Variable {
               identifier: "file",
               position: (33, 17),
              },
             },
             Raw {
              content: " $out\npromtool ",
              position: (33, 22),
             },
             Expression {
              expression: Variable {
               identifier: "what",
               position: (34, 20),
              },
             },
             Raw {
              content: " $out\n",
              position: (34, 25),
             },
            ],
           },
          ],
         },
         else_: Variable {
          identifier: "file",
          position: (35, 15),
         },
         position: (29, 5),
        },
        position: (28, 31),
       },
       position: (28, 25),
      },
      position: (28, 19),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "writePrettyJSON",
        position: (38, 3),
       },
      ],
     },
     Function {
      argument: Some(
       "name",
      ),
      arguments: FunctionArguments {
       arguments: [],
       ellipsis: false,
      },
      definition: Function {
       argument: Some(
        "x",
       ),
       arguments: FunctionArguments {
        arguments: [],
        ellipsis: false,
       },
       definition: FunctionApplication {
        function: PropertyAccess {
         expression: Variable {
          identifier: "pkgs",
          position: (39, 5),
         },
         attribute_path: AttributePath {
          attributes: [
           Raw {
            content: "runCommandLocal",
            position: (39, 10),
           },
          ],
         },
         default: None,
        },
        arguments: [
         Variable {
          identifier: "name",
          position: (39, 26),
         },
         Map {
          bindings: [],
          recursive: false,
          position: (39, 31),
         },
         String {
          parts: [
           Raw {
            content: "echo ",
            position: (40, 1),
           },
           Raw {
            content: "'",
            position: (40, 12),
           },
           Expression {
            expression: FunctionApplication {
             function: PropertyAccess {
              expression: Variable {
               identifier: "builtins",
               position: (40, 15),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "toJSON",
                 position: (40, 24),
                },
               ],
              },
              default: None,
             },
             arguments: [
              Variable {
               identifier: "x",
               position: (40, 31),
              },
             ],
            },
           },
           Raw {
            content: "' | ",
            position: (40, 33),
           },
           Expression {
            expression: PropertyAccess {
             expression: Variable {
              identifier: "pkgs",
              position: (40, 39),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "jq",
                position: (40, 44),
               },
              ],
             },
             default: None,
            },
           },
           Raw {
            content: "/bin/jq . > $out\n",
            position: (40, 47),
           },
          ],
         },
        ],
       },
       position: (38, 27),
      },
      position: (38, 21),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "generatedPrometheusYml",
        position: (43, 3),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "writePrettyJSON",
       position: (43, 28),
      },
      arguments: [
       String {
        parts: [
         Raw {
          content: "prometheus.yml",
          position: (43, 45),
         },
        ],
       },
       Variable {
        identifier: "promConfig",
        position: (43, 61),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promConfig",
        position: (46, 3),
       },
      ],
     },
     Map {
      bindings: [
       KeyValue(
        AttributePath {
         attributes: [
          Raw {
           content: "global",
           position: (47, 5),
          },
         ],
        },
        FunctionApplication {
         function: Variable {
          identifier: "filterValidPrometheus",
          position: (47, 14),
         },
         arguments: [
          PropertyAccess {
           expression: Variable {
            identifier: "cfg",
            position: (47, 36),
           },
           attribute_path: AttributePath {
            attributes: [
             Raw {
              content: "globalConfig",
              position: (47, 40),
             },
            ],
           },
           default: None,
          },
         ],
        },
       ),
       KeyValue(
        AttributePath {
         attributes: [
          Raw {
           content: "rule_files",
           position: (48, 5),
          },
         ],
        },
        FunctionApplication {
         function: Variable {
          identifier: "map",
          position: (48, 18),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "promtoolCheck",
            position: (48, 23),
           },
           arguments: [
            String {
             parts: [
              Raw {
               content: "check rules",
               position: (48, 38),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "rules",
               position: (48, 52),
              },
             ],
            },
           ],
          },
          BinaryOperation {
           operator: Concatenation,
           operands: [
            PropertyAccess {
             expression: Variable {
              identifier: "cfg",
              position: (48, 61),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "ruleFiles",
                position: (48, 65),
               },
              ],
             },
             default: None,
            },
            List {
             elements: [
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "pkgs",
                 position: (49, 8),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "writeText",
                   position: (49, 13),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                String {
                 parts: [
                  Raw {
                   content: "prometheus.rules",
                   position: (49, 24),
                  },
                 ],
                },
                FunctionApplication {
                 function: Variable {
                  identifier: "concatStringsSep",
                  position: (49, 43),
                 },
                 arguments: [
                  String {
                   parts: [
                    Raw {
                     content: "\n",
                     position: (49, 61),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "cfg",
                    position: (49, 65),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "rules",
                      position: (49, 69),
                     },
                    ],
                   },
                   default: None,
                  },
                 ],
                },
               ],
              },
             ],
             position: (48, 78),
            },
           ],
           position: (48, 75),
          },
         ],
        },
       ),
       KeyValue(
        AttributePath {
         attributes: [
          Raw {
           content: "scrape_configs",
           position: (51, 5),
          },
         ],
        },
        FunctionApplication {
         function: Variable {
          identifier: "filterValidPrometheus",
          position: (51, 22),
         },
         arguments: [
          PropertyAccess {
           expression: Variable {
            identifier: "cfg",
            position: (51, 44),
           },
           attribute_path: AttributePath {
            attributes: [
             Raw {
              content: "scrapeConfigs",
              position: (51, 48),
             },
            ],
           },
           default: None,
          },
         ],
        },
       ),
       KeyValue(
        AttributePath {
         attributes: [
          Raw {
           content: "remote_write",
           position: (52, 5),
          },
         ],
        },
        FunctionApplication {
         function: Variable {
          identifier: "filterValidPrometheus",
          position: (52, 20),
         },
         arguments: [
          PropertyAccess {
           expression: Variable {
            identifier: "cfg",
            position: (52, 42),
           },
           attribute_path: AttributePath {
            attributes: [
             Raw {
              content: "remoteWrite",
              position: (52, 46),
             },
            ],
           },
           default: None,
          },
         ],
        },
       ),
       KeyValue(
        AttributePath {
         attributes: [
          Raw {
           content: "remote_read",
           position: (53, 5),
          },
         ],
        },
        FunctionApplication {
         function: Variable {
          identifier: "filterValidPrometheus",
          position: (53, 19),
         },
         arguments: [
          PropertyAccess {
           expression: Variable {
            identifier: "cfg",
            position: (53, 41),
           },
           attribute_path: AttributePath {
            attributes: [
             Raw {
              content: "remoteRead",
              position: (53, 45),
             },
            ],
           },
           default: None,
          },
         ],
        },
       ),
       KeyValue(
        AttributePath {
         attributes: [
          Raw {
           content: "alerting",
           position: (54, 5),
          },
         ],
        },
        Map {
         bindings: [
          Inherit(
           Some(
            Variable {
             identifier: "cfg",
             position: (55, 16),
            },
           ),
           [
            Raw {
             content: "alertmanagers",
             position: (55, 21),
            },
           ],
          ),
         ],
         recursive: false,
         position: (54, 16),
        },
       ),
      ],
      recursive: false,
      position: (46, 16),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "prometheusYml",
        position: (59, 3),
       },
      ],
     },
     LetIn {
      bindings: [
       KeyValue(
        AttributePath {
         attributes: [
          Raw {
           content: "yml",
           position: (61, 7),
          },
         ],
        },
        IfThenElse {
         predicate: BinaryOperation {
          operator: NotEqualTo,
          operands: [
           PropertyAccess {
            expression: Variable {
             identifier: "cfg",
             position: (62, 12),
            },
            attribute_path: AttributePath {
             attributes: [
              Raw {
               content: "configText",
               position: (62, 16),
              },
             ],
            },
            default: None,
           },
           Variable {
            identifier: "null",
            position: (62, 30),
           },
          ],
          position: (62, 27),
         },
         then: FunctionApplication {
          function: PropertyAccess {
           expression: Variable {
            identifier: "pkgs",
            position: (63, 11),
           },
           attribute_path: AttributePath {
            attributes: [
             Raw {
              content: "writeText",
              position: (63, 16),
             },
            ],
           },
           default: None,
          },
          arguments: [
           String {
            parts: [
             Raw {
              content: "prometheus.yml",
              position: (63, 27),
             },
            ],
           },
           PropertyAccess {
            expression: Variable {
             identifier: "cfg",
             position: (63, 43),
            },
            attribute_path: AttributePath {
             attributes: [
              Raw {
               content: "configText",
               position: (63, 47),
              },
             ],
            },
            default: None,
           },
          ],
         },
         else_: Variable {
          identifier: "generatedPrometheusYml",
          position: (64, 14),
         },
         position: (62, 9),
        },
       ),
      ],
      target: FunctionApplication {
       function: Variable {
        identifier: "promtoolCheck",
        position: (66, 5),
       },
       arguments: [
        String {
         parts: [
          Raw {
           content: "check config",
           position: (66, 20),
          },
         ],
        },
        String {
         parts: [
          Raw {
           content: "prometheus.yml",
           position: (66, 35),
          },
         ],
        },
        Variable {
         identifier: "yml",
         position: (66, 51),
        },
       ],
      },
      position: (60, 5),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "cmdlineArgs",
        position: (68, 3),
       },
      ],
     },
     BinaryOperation {
      operator: Concatenation,
      operands: [
       PropertyAccess {
        expression: Variable {
         identifier: "cfg",
         position: (68, 17),
        },
        attribute_path: AttributePath {
         attributes: [
          Raw {
           content: "extraFlags",
           position: (68, 21),
          },
         ],
        },
        default: None,
       },
       BinaryOperation {
        operator: Concatenation,
        operands: [
         List {
          elements: [
           String {
            parts: [
             Raw {
              content: "--storage.tsdb.path=",
              position: (69, 6),
             },
             Expression {
              expression: Variable {
               identifier: "workingDir",
               position: (69, 28),
              },
             },
             Raw {
              content: "/data/",
              position: (69, 39),
             },
            ],
           },
           String {
            parts: [
             Raw {
              content: "--config.file=",
              position: (70, 6),
             },
             Expression {
              expression: IfThenElse {
               predicate: PropertyAccess {
                expression: Variable {
                 identifier: "cfg",
                 position: (71, 10),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "enableReload",
                   position: (71, 14),
                  },
                 ],
                },
                default: None,
               },
               then: String {
                parts: [
                 Raw {
                  content: "/etc/prometheus/prometheus.yaml",
                  position: (72, 13),
                 },
                ],
               },
               else_: Variable {
                identifier: "prometheusYml",
                position: (73, 12),
               },
               position: (71, 7),
              },
             },
            ],
           },
           String {
            parts: [
             Raw {
              content: "--web.listen-address=",
              position: (75, 6),
             },
             Expression {
              expression: PropertyAccess {
               expression: Variable {
                identifier: "cfg",
                position: (75, 29),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "listenAddress",
                  position: (75, 33),
                 },
                ],
               },
               default: None,
              },
             },
             Raw {
              content: ":",
              position: (75, 47),
             },
             Expression {
              expression: FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "builtins",
                 position: (75, 50),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "toString",
                   position: (75, 59),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "cfg",
                  position: (75, 68),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "port",
                    position: (75, 72),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             },
            ],
           },
           String {
            parts: [
             Raw {
              content: "--alertmanager.notification-queue-capacity=",
              position: (76, 6),
             },
             Expression {
              expression: FunctionApplication {
               function: Variable {
                identifier: "toString",
                position: (76, 51),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "cfg",
                  position: (76, 60),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "alertmanagerNotificationQueueCapacity",
                    position: (76, 64),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             },
            ],
           },
           String {
            parts: [
             Raw {
              content: "--alertmanager.timeout=",
              position: (77, 6),
             },
             Expression {
              expression: FunctionApplication {
               function: Variable {
                identifier: "toString",
                position: (77, 31),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "cfg",
                  position: (77, 40),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "alertmanagerTimeout",
                    position: (77, 44),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             },
             Raw {
              content: "s",
              position: (77, 64),
             },
            ],
           },
          ],
          position: (68, 35),
         },
         BinaryOperation {
          operator: Concatenation,
          operands: [
           FunctionApplication {
            function: Variable {
             identifier: "optional",
             position: (78, 8),
            },
            arguments: [
             BinaryOperation {
              operator: NotEqualTo,
              operands: [
               PropertyAccess {
                expression: Variable {
                 identifier: "cfg",
                 position: (78, 18),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "webExternalUrl",
                   position: (78, 22),
                  },
                 ],
                },
                default: None,
               },
               Variable {
                identifier: "null",
                position: (78, 40),
               },
              ],
              position: (78, 37),
             },
             String {
              parts: [
               Raw {
                content: "--web.external-url=",
                position: (78, 47),
               },
               Expression {
                expression: PropertyAccess {
                 expression: Variable {
                  identifier: "cfg",
                  position: (78, 68),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "webExternalUrl",
                    position: (78, 72),
                   },
                  ],
                 },
                 default: None,
                },
               },
              ],
             },
            ],
           },
           FunctionApplication {
            function: Variable {
             identifier: "optional",
             position: (79, 8),
            },
            arguments: [
             BinaryOperation {
              operator: NotEqualTo,
              operands: [
               PropertyAccess {
                expression: Variable {
                 identifier: "cfg",
                 position: (79, 18),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "retentionTime",
                   position: (79, 22),
                  },
                 ],
                },
                default: None,
               },
               Variable {
                identifier: "null",
                position: (79, 39),
               },
              ],
              position: (79, 36),
             },
             String {
              parts: [
               Raw {
                content: "--storage.tsdb.retention.time=",
                position: (79, 46),
               },
               Expression {
                expression: PropertyAccess {
                 expression: Variable {
                  identifier: "cfg",
                  position: (79, 78),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "retentionTime",
                    position: (79, 82),
                   },
                  ],
                 },
                 default: None,
                },
               },
              ],
             },
            ],
           },
          ],
          position: (79, 5),
         },
        ],
        position: (78, 5),
       },
      ],
      position: (68, 32),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "filterValidPrometheus",
        position: (81, 3),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "filterAttrsListRecursive",
       position: (81, 27),
      },
      arguments: [
       Function {
        argument: Some(
         "n",
        ),
        arguments: FunctionArguments {
         arguments: [],
         ellipsis: false,
        },
        definition: Function {
         argument: Some(
          "v",
         ),
         arguments: FunctionArguments {
          arguments: [],
          ellipsis: false,
         },
         definition: UnaryOperation {
          operator: Not,
          operand: BinaryOperation {
           operator: LogicalOr,
           operands: [
            BinaryOperation {
             operator: EqualTo,
             operands: [
              Variable {
               identifier: "n",
               position: (81, 61),
              },
              String {
               parts: [
                Raw {
                 content: "_module",
                 position: (81, 67),
                },
               ],
              },
             ],
             position: (81, 63),
            },
            BinaryOperation {
             operator: EqualTo,
             operands: [
              Variable {
               identifier: "v",
               position: (81, 79),
              },
              Variable {
               identifier: "null",
               position: (81, 84),
              },
             ],
             position: (81, 81),
            },
           ],
           position: (81, 76),
          },
          position: (81, 59),
         },
         position: (81, 56),
        },
        position: (81, 53),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "filterAttrsListRecursive",
        position: (82, 3),
       },
      ],
     },
     Function {
      argument: Some(
       "pred",
      ),
      arguments: FunctionArguments {
       arguments: [],
       ellipsis: false,
      },
      definition: Function {
       argument: Some(
        "x",
       ),
       arguments: FunctionArguments {
        arguments: [],
        ellipsis: false,
       },
       definition: IfThenElse {
        predicate: FunctionApplication {
         function: Variable {
          identifier: "isAttrs",
          position: (83, 8),
         },
         arguments: [
          Variable {
           identifier: "x",
           position: (83, 16),
          },
         ],
        },
        then: FunctionApplication {
         function: Variable {
          identifier: "listToAttrs",
          position: (84, 7),
         },
         arguments: [
          FunctionApplication {
           function: Variable {
            identifier: "concatMap",
            position: (86, 11),
           },
           arguments: [
            Function {
             argument: Some(
              "name",
             ),
             arguments: FunctionArguments {
              arguments: [],
              ellipsis: false,
             },
             definition: LetIn {
              bindings: [
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "v",
                   position: (88, 19),
                  },
                 ],
                },
                PropertyAccess {
                 expression: Variable {
                  identifier: "x",
                  position: (88, 23),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Expression {
                    expression: Variable {
                     identifier: "name",
                     position: (88, 27),
                    },
                   },
                  ],
                 },
                 default: None,
                },
               ),
              ],
              target: IfThenElse {
               predicate: FunctionApplication {
                function: Variable {
                 identifier: "pred",
                 position: (89, 18),
                },
                arguments: [
                 Variable {
                  identifier: "name",
                  position: (89, 23),
                 },
                 Variable {
                  identifier: "v",
                  position: (89, 28),
                 },
                ],
               },
               then: List {
                elements: [
                 FunctionApplication {
                  function: Variable {
                   identifier: "nameValuePair",
                   position: (90, 18),
                  },
                  arguments: [
                   Variable {
                    identifier: "name",
                    position: (90, 32),
                   },
                   FunctionApplication {
                    function: Variable {
                     identifier: "filterAttrsListRecursive",
                     position: (90, 38),
                    },
                    arguments: [
                     Variable {
                      identifier: "pred",
                      position: (90, 63),
                     },
                     Variable {
                      identifier: "v",
                      position: (90, 68),
                     },
                    ],
                   },
                  ],
                 },
                ],
                position: (89, 35),
               },
               else_: List {
                elements: [],
                position: (91, 22),
               },
               position: (89, 15),
              },
              position: (88, 15),
             },
             position: (87, 14),
            },
            FunctionApplication {
             function: Variable {
              identifier: "attrNames",
              position: (93, 14),
             },
             arguments: [
              Variable {
               identifier: "x",
               position: (93, 24),
              },
             ],
            },
           ],
          },
         ],
        },
        else_: IfThenElse {
         predicate: FunctionApplication {
          function: Variable {
           identifier: "isList",
           position: (95, 13),
          },
          arguments: [
           Variable {
            identifier: "x",
            position: (95, 20),
           },
          ],
         },
         then: FunctionApplication {
          function: Variable {
           identifier: "map",
           position: (96, 7),
          },
          arguments: [
           FunctionApplication {
            function: Variable {
             identifier: "filterAttrsListRecursive",
             position: (96, 12),
            },
            arguments: [
             Variable {
              identifier: "pred",
              position: (96, 37),
             },
            ],
           },
           Variable {
            identifier: "x",
            position: (96, 43),
           },
          ],
         },
         else_: Variable {
          identifier: "x",
          position: (97, 10),
         },
         position: (95, 10),
        },
        position: (83, 5),
       },
       position: (82, 36),
      },
      position: (82, 30),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "mkDefOpt",
        position: (103, 3),
       },
      ],
     },
     Function {
      argument: Some(
       "type",
      ),
      arguments: FunctionArguments {
       arguments: [],
       ellipsis: false,
      },
      definition: Function {
       argument: Some(
        "defaultStr",
       ),
       arguments: FunctionArguments {
        arguments: [],
        ellipsis: false,
       },
       definition: Function {
        argument: Some(
         "description",
        ),
        arguments: FunctionArguments {
         arguments: [],
         ellipsis: false,
        },
        definition: FunctionApplication {
         function: Variable {
          identifier: "mkOpt",
          position: (103, 45),
         },
         arguments: [
          Variable {
           identifier: "type",
           position: (103, 51),
          },
          BinaryOperation {
           operator: Addition,
           operands: [
            Variable {
             identifier: "description",
             position: (103, 57),
            },
            String {
             parts: [
              Raw {
               content: "\nDefaults to <literal>",
               position: (104, 1),
              },
              Expression {
               expression: Variable {
                identifier: "defaultStr",
                position: (105, 28),
               },
              },
              Raw {
               content: "</literal> in prometheus\nwhen set to <literal>null</literal>.\n",
               position: (105, 39),
              },
             ],
            },
           ],
           position: (103, 69),
          },
         ],
        },
        position: (103, 32),
       },
       position: (103, 20),
      },
      position: (103, 14),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "mkOpt",
        position: (109, 3),
       },
      ],
     },
     Function {
      argument: Some(
       "type",
      ),
      arguments: FunctionArguments {
       arguments: [],
       ellipsis: false,
      },
      definition: Function {
       argument: Some(
        "description",
       ),
       arguments: FunctionArguments {
        arguments: [],
        ellipsis: false,
       },
       definition: FunctionApplication {
        function: Variable {
         identifier: "mkOption",
         position: (109, 30),
        },
        arguments: [
         Map {
          bindings: [
           KeyValue(
            AttributePath {
             attributes: [
              Raw {
               content: "type",
               position: (110, 5),
              },
             ],
            },
            FunctionApplication {
             function: PropertyAccess {
              expression: Variable {
               identifier: "types",
               position: (110, 12),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "nullOr",
                 position: (110, 18),
                },
               ],
              },
              default: None,
             },
             arguments: [
              Variable {
               identifier: "type",
               position: (110, 25),
              },
             ],
            },
           ),
           KeyValue(
            AttributePath {
             attributes: [
              Raw {
               content: "default",
               position: (111, 5),
              },
             ],
            },
            Variable {
             identifier: "null",
             position: (111, 15),
            },
           ),
           Inherit(
            None,
            [
             Raw {
              content: "description",
              position: (112, 13),
             },
            ],
           ),
          ],
          recursive: false,
          position: (109, 39),
         },
        ],
       },
       position: (109, 17),
      },
      position: (109, 11),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "mkSdConfigModule",
        position: (115, 3),
       },
      ],
     },
     Function {
      argument: Some(
       "extraOptions",
      ),
      arguments: FunctionArguments {
       arguments: [],
       ellipsis: false,
      },
      definition: FunctionApplication {
       function: PropertyAccess {
        expression: Variable {
         identifier: "types",
         position: (115, 36),
        },
        attribute_path: AttributePath {
         attributes: [
          Raw {
           content: "submodule",
           position: (115, 42),
          },
         ],
        },
        default: None,
       },
       arguments: [
        Map {
         bindings: [
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "options",
              position: (116, 5),
             },
            ],
           },
           BinaryOperation {
            operator: Update,
            operands: [
             Map {
              bindings: [
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "basic_auth",
                   position: (117, 7),
                  },
                 ],
                },
                FunctionApplication {
                 function: Variable {
                  identifier: "mkOpt",
                  position: (117, 20),
                 },
                 arguments: [
                  PropertyAccess {
                   expression: Variable {
                    identifier: "promTypes",
                    position: (117, 26),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "basic_auth",
                      position: (117, 36),
                     },
                    ],
                   },
                   default: None,
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Optional HTTP basic authentication information.\n",
                     position: (118, 1),
                    },
                   ],
                  },
                 ],
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "authorization",
                   position: (121, 7),
                  },
                 ],
                },
                FunctionApplication {
                 function: Variable {
                  identifier: "mkOpt",
                  position: (121, 23),
                 },
                 arguments: [
                  FunctionApplication {
                   function: PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (122, 10),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "submodule",
                       position: (122, 16),
                      },
                     ],
                    },
                    default: None,
                   },
                   arguments: [
                    Map {
                     bindings: [
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "options",
                          position: (123, 11),
                         },
                        ],
                       },
                       Map {
                        bindings: [
                         KeyValue(
                          AttributePath {
                           attributes: [
                            Raw {
                             content: "type",
                             position: (124, 13),
                            },
                           ],
                          },
                          FunctionApplication {
                           function: Variable {
                            identifier: "mkDefOpt",
                            position: (124, 20),
                           },
                           arguments: [
                            PropertyAccess {
                             expression: Variable {
                              identifier: "types",
                              position: (124, 29),
                             },
                             attribute_path: AttributePath {
                              attributes: [
                               Raw {
                                content: "str",
                                position: (124, 35),
                               },
                              ],
                             },
                             default: None,
                            },
                            String {
                             parts: [
                              Raw {
                               content: "Bearer",
                               position: (124, 40),
                              },
                             ],
                            },
                            String {
                             parts: [
                              Raw {
                               content: "Sets the authentication type.\n",
                               position: (125, 1),
                              },
                             ],
                            },
                           ],
                          },
                         ),
                         KeyValue(
                          AttributePath {
                           attributes: [
                            Raw {
                             content: "credentials",
                             position: (128, 13),
                            },
                           ],
                          },
                          FunctionApplication {
                           function: Variable {
                            identifier: "mkOpt",
                            position: (128, 27),
                           },
                           arguments: [
                            PropertyAccess {
                             expression: Variable {
                              identifier: "types",
                              position: (128, 33),
                             },
                             attribute_path: AttributePath {
                              attributes: [
                               Raw {
                                content: "str",
                                position: (128, 39),
                               },
                              ],
                             },
                             default: None,
                            },
                            String {
                             parts: [
                              Raw {
                               content: "Sets the credentials. It is mutually exclusive with `credentials_file`.\n",
                               position: (129, 1),
                              },
                             ],
                            },
                           ],
                          },
                         ),
                         KeyValue(
                          AttributePath {
                           attributes: [
                            Raw {
                             content: "credentials_file",
                             position: (132, 13),
                            },
                           ],
                          },
                          FunctionApplication {
                           function: Variable {
                            identifier: "mkOpt",
                            position: (132, 32),
                           },
                           arguments: [
                            PropertyAccess {
                             expression: Variable {
                              identifier: "types",
                              position: (132, 38),
                             },
                             attribute_path: AttributePath {
                              attributes: [
                               Raw {
                                content: "str",
                                position: (132, 44),
                               },
                              ],
                             },
                             default: None,
                            },
                            String {
                             parts: [
                              Raw {
                               content: "Sets the credentials to the credentials read from the configured file.\nIt is mutually exclusive with `credentials`.\n",
                               position: (133, 1),
                              },
                             ],
                            },
                           ],
                          },
                         ),
                        ],
                        recursive: false,
                        position: (123, 21),
                       },
                      ),
                     ],
                     recursive: false,
                     position: (122, 26),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Optional `Authorization` header configuration.\n",
                     position: (138, 1),
                    },
                   ],
                  },
                 ],
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "oauth2",
                   position: (141, 7),
                  },
                 ],
                },
                FunctionApplication {
                 function: Variable {
                  identifier: "mkOpt",
                  position: (141, 16),
                 },
                 arguments: [
                  PropertyAccess {
                   expression: Variable {
                    identifier: "promtypes",
                    position: (141, 22),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "oauth2",
                      position: (141, 32),
                     },
                    ],
                   },
                   default: None,
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Optional OAuth 2.0 configuration.\nCannot be used at the same time as basic_auth or authorization.\n",
                     position: (142, 1),
                    },
                   ],
                  },
                 ],
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "proxy_url",
                   position: (146, 7),
                  },
                 ],
                },
                FunctionApplication {
                 function: Variable {
                  identifier: "mkOpt",
                  position: (146, 19),
                 },
                 arguments: [
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (146, 25),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (146, 31),
                     },
                    ],
                   },
                   default: None,
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Optional proxy URL.\n",
                     position: (147, 1),
                    },
                   ],
                  },
                 ],
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "follow_redirects",
                   position: (150, 7),
                  },
                 ],
                },
                FunctionApplication {
                 function: Variable {
                  identifier: "mkDefOpt",
                  position: (150, 26),
                 },
                 arguments: [
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (150, 35),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "bool",
                      position: (150, 41),
                     },
                    ],
                   },
                   default: None,
                  },
                  String {
                   parts: [
                    Raw {
                     content: "true",
                     position: (150, 47),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Configure whether HTTP requests follow HTTP 3xx redirects.\n",
                     position: (151, 1),
                    },
                   ],
                  },
                 ],
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "tls_config",
                   position: (154, 7),
                  },
                 ],
                },
                FunctionApplication {
                 function: Variable {
                  identifier: "mkOpt",
                  position: (154, 20),
                 },
                 arguments: [
                  PropertyAccess {
                   expression: Variable {
                    identifier: "promTypes",
                    position: (154, 26),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "tls_config",
                      position: (154, 36),
                     },
                    ],
                   },
                   default: None,
                  },
                  String {
                   parts: [
                    Raw {
                     content: "TLS configuration.\n",
                     position: (155, 1),
                    },
                   ],
                  },
                 ],
                },
               ),
              ],
              recursive: false,
              position: (116, 15),
             },
             Variable {
              identifier: "extraOptions",
              position: (157, 10),
             },
            ],
            position: (157, 7),
           },
          ),
         ],
         recursive: false,
         position: (115, 52),
        },
       ],
      },
      position: (115, 22),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (164, 3),
       },
       Raw {
        content: "globalConfig",
        position: (164, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (164, 28),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (164, 34),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (165, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "scrape_interval",
                position: (166, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (166, 25),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (166, 34),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (166, 40),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "1m",
                  position: (166, 45),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "How frequently to scrape targets by default.\n",
                  position: (167, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "scrape_timeout",
                position: (170, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (170, 24),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (170, 33),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (170, 39),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "10s",
                  position: (170, 44),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "How long until a scrape request times out.\n",
                  position: (171, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "evaluation_interval",
                position: (174, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (174, 29),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (174, 38),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (174, 44),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "1m",
                  position: (174, 49),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "How frequently to evaluate rules by default.\n",
                  position: (175, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "external_labels",
                position: (178, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (178, 25),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (178, 32),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "attrsOf",
                    position: (178, 38),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "types",
                   position: (178, 46),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "str",
                     position: (178, 52),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The labels to add to any time series or alerts when\ncommunicating with external systems (federation, remote\nstorage, Alertmanager).\n",
                  position: (179, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (165, 15),
          },
         ),
        ],
        recursive: false,
        position: (164, 44),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (186, 3),
       },
       Raw {
        content: "basic_auth",
        position: (186, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (186, 26),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (186, 32),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (187, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "username",
                position: (188, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (188, 18),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (189, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (189, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (189, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (190, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "HTTP username\n",
                     position: (191, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (188, 27),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "password",
                position: (194, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (194, 18),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (194, 24),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (194, 30),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "HTTP password",
                  position: (194, 35),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "password_file",
                position: (195, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (195, 23),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (195, 29),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (195, 35),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "HTTP password file",
                  position: (195, 40),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (187, 15),
          },
         ),
        ],
        recursive: false,
        position: (186, 42),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (199, 3),
       },
       Raw {
        content: "tls_config",
        position: (199, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (199, 26),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (199, 32),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (200, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "ca_file",
                position: (201, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (201, 17),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (201, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (201, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "CA certificate to validate API server certificate with.\n",
                  position: (202, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "cert_file",
                position: (205, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (205, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (205, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (205, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Certificate file for client cert authentication to the server.\n",
                  position: (206, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "key_file",
                position: (209, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (209, 18),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (209, 24),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (209, 30),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Key file for client cert authentication to the server.\n",
                  position: (210, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "server_name",
                position: (213, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (213, 21),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (213, 27),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (213, 33),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "ServerName extension to indicate the name of the server.\nhttp://tools.ietf.org/html/rfc4366#section-3.1\n",
                  position: (214, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "insecure_skip_verify",
                position: (218, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (218, 30),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (218, 36),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "bool",
                   position: (218, 42),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Disable validation of the server certificate.\n",
                  position: (219, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (200, 15),
          },
         ),
        ],
        recursive: false,
        position: (199, 42),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promtypes",
        position: (224, 3),
       },
       Raw {
        content: "oauth2",
        position: (224, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (224, 22),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (224, 28),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (225, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "client_id",
                position: (226, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (226, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (226, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (226, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "OAuth client ID.\n",
                  position: (227, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "client_secret",
                position: (230, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (230, 23),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (230, 29),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (230, 35),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "OAuth client secret.\n",
                  position: (231, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "client_secret_file",
                position: (234, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (234, 28),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (234, 34),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (234, 40),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Read the client secret from a file. It is mutually exclusive with `client_secret`.\n",
                  position: (235, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "scopes",
                position: (238, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (238, 16),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (238, 23),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (238, 29),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "types",
                   position: (238, 36),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "str",
                     position: (238, 42),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Scopes for the token request.\n",
                  position: (239, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "token_url",
                position: (242, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (242, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (242, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (242, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "The URL to fetch the token from.\n",
                  position: (243, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "endpoint_params",
                position: (246, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (246, 25),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (246, 32),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "attrsOf",
                    position: (246, 38),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "types",
                   position: (246, 46),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "str",
                     position: (246, 52),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Optional parameters to append to the token URL.\n",
                  position: (247, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (225, 15),
          },
         ),
        ],
        recursive: false,
        position: (224, 38),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (252, 3),
       },
       Raw {
        content: "scrape_config",
        position: (252, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (252, 29),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (252, 35),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (253, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "authorization",
                position: (254, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (254, 23),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (255, 9),
                    },
                   ],
                  },
                  FunctionApplication {
                   function: PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (255, 16),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "nullOr",
                       position: (255, 22),
                      },
                     ],
                    },
                    default: None,
                   },
                   arguments: [
                    PropertyAccess {
                     expression: Variable {
                      identifier: "types",
                      position: (255, 29),
                     },
                     attribute_path: AttributePath {
                      attributes: [
                       Raw {
                        content: "attrs",
                        position: (255, 35),
                       },
                      ],
                     },
                     default: None,
                    },
                   ],
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "default",
                     position: (256, 9),
                    },
                   ],
                  },
                  Variable {
                   identifier: "null",
                   position: (256, 19),
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (257, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Sets the `Authorization` header on every scrape request with the configured credentials.\n",
                     position: (258, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (254, 32),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "job_name",
                position: (261, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (261, 18),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (262, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (262, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (262, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (263, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The job name assigned to scraped metrics by default.\n",
                     position: (264, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (261, 27),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "scrape_interval",
                position: (267, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (267, 25),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (267, 31),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (267, 37),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "How frequently to scrape targets from this job. Defaults to the\nglobally configured default.\n",
                  position: (268, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "scrape_timeout",
                position: (272, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (272, 24),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (272, 30),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (272, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Per-target timeout when scraping this job. Defaults to the\nglobally configured default.\n",
                  position: (273, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "metrics_path",
                position: (277, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (277, 22),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (277, 31),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (277, 37),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "/metrics",
                  position: (277, 42),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The HTTP resource path on which to fetch metrics from targets.\n",
                  position: (278, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "honor_labels",
                position: (281, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (281, 22),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (281, 31),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "bool",
                   position: (281, 37),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "false",
                  position: (281, 43),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Controls how Prometheus handles conflicts between labels\nthat are already present in scraped data and labels that\nPrometheus would attach server-side (\"job\" and \"instance\"\nlabels, manually configured target labels, and labels\ngenerated by service discovery implementations).\n\nIf honor_labels is set to \"true\", label conflicts are\nresolved by keeping label values from the scraped data and\nignoring the conflicting server-side labels.\n\nIf honor_labels is set to \"false\", label conflicts are\nresolved by renaming conflicting labels in the scraped data\nto \"exported_&lt;original-label&gt;\" (for example\n\"exported_instance\", \"exported_job\") and then attaching\nserver-side labels. This is useful for use cases such as\nfederation, where all labels specified in the target should\nbe preserved.\n",
                  position: (282, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "honor_timestamps",
                position: (301, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (301, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (301, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "bool",
                   position: (301, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "true",
                  position: (301, 47),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "honor_timestamps controls whether Prometheus respects the timestamps present\nin scraped data.\n\nIf honor_timestamps is set to <literal>true</literal>, the timestamps of the metrics exposed\nby the target will be used.\n\nIf honor_timestamps is set to <literal>false</literal>, the timestamps of the metrics exposed\nby the target will be ignored.\n",
                  position: (302, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "scheme",
                position: (312, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (312, 16),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (312, 26),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "enum",
                    position: (312, 32),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 List {
                  elements: [
                   String {
                    parts: [
                     Raw {
                      content: "http",
                      position: (312, 40),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "https",
                      position: (312, 47),
                     },
                    ],
                   },
                  ],
                  position: (312, 37),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "http",
                  position: (312, 58),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The URL scheme with which to fetch metrics from targets.\n",
                  position: (313, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "params",
                position: (316, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (316, 16),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (316, 23),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "attrsOf",
                    position: (316, 29),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 FunctionApplication {
                  function: PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (316, 38),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "listOf",
                      position: (316, 44),
                     },
                    ],
                   },
                   default: None,
                  },
                  arguments: [
                   PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (316, 51),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "str",
                       position: (316, 57),
                      },
                     ],
                    },
                    default: None,
                   },
                  ],
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Optional HTTP URL parameters.\n",
                  position: (317, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "basic_auth",
                position: (320, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (320, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (320, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "basic_auth",
                   position: (320, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the `Authorization` header on every scrape request with the\nconfigured username and password.\npassword and password_file are mutually exclusive.\n",
                  position: (321, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "bearer_token",
                position: (326, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (326, 22),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (326, 28),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (326, 34),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the `Authorization` header on every scrape request with\nthe configured bearer token. It is mutually exclusive with\n<option>bearer_token_file</option>.\n",
                  position: (327, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "bearer_token_file",
                position: (332, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (332, 27),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (332, 33),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (332, 39),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the `Authorization` header on every scrape request with\nthe bearer token read from the configured file. It is mutually\nexclusive with <option>bearer_token</option>.\n",
                  position: (333, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tls_config",
                position: (338, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (338, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (338, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "tls_config",
                   position: (338, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Configures the scrape request's TLS settings.\n",
                  position: (339, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "proxy_url",
                position: (342, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (342, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (342, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (342, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Optional proxy URL.\n",
                  position: (343, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "azure_sd_configs",
                position: (346, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (346, 26),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (346, 33),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (346, 39),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (346, 46),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "azure_sd_config",
                     position: (346, 56),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Azure service discovery configurations.\n",
                  position: (347, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "consul_sd_configs",
                position: (350, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (350, 27),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (350, 34),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (350, 40),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (350, 47),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "consul_sd_config",
                     position: (350, 57),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Consul service discovery configurations.\n",
                  position: (351, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "digitalocean_sd_configs",
                position: (354, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (354, 33),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (354, 40),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (354, 46),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (354, 53),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "digitalocean_sd_config",
                     position: (354, 63),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of DigitalOcean service discovery configurations.\n",
                  position: (355, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "docker_sd_configs",
                position: (358, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (358, 27),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (358, 34),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (358, 40),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (358, 47),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "docker_sd_config",
                     position: (358, 57),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Docker service discovery configurations.\n",
                  position: (359, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "dockerswarm_sd_configs",
                position: (362, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (362, 32),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (362, 39),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (362, 45),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (362, 52),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "dockerswarm_sd_config",
                     position: (362, 62),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Docker Swarm service discovery configurations.\n",
                  position: (363, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "dns_sd_configs",
                position: (366, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (366, 24),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (366, 31),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (366, 37),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (366, 44),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "dns_sd_config",
                     position: (366, 54),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of DNS service discovery configurations.\n",
                  position: (367, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "ec2_sd_configs",
                position: (370, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (370, 24),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (370, 31),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (370, 37),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (370, 44),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "ec2_sd_config",
                     position: (370, 54),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of EC2 service discovery configurations.\n",
                  position: (371, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "eureka_sd_configs",
                position: (374, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (374, 27),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (374, 34),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (374, 40),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (374, 47),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "eureka_sd_config",
                     position: (374, 57),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Eureka service discovery configurations.\n",
                  position: (375, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "file_sd_configs",
                position: (378, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (378, 25),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (378, 32),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (378, 38),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (378, 45),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "file_sd_config",
                     position: (378, 55),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of file service discovery configurations.\n",
                  position: (379, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "gce_sd_configs",
                position: (382, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (382, 24),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (382, 31),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (382, 37),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (382, 44),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "gce_sd_config",
                     position: (382, 54),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Google Compute Engine service discovery configurations.\n\nSee <link\nxlink:href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#gce_sd_config\">the\nrelevant Prometheus configuration docs</link> for more detail.\n",
                  position: (383, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "hetzner_sd_configs",
                position: (390, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (390, 28),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (390, 35),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (390, 41),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (390, 48),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "hetzner_sd_config",
                     position: (390, 58),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Hetzner service discovery configurations.\n",
                  position: (391, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "http_sd_configs",
                position: (394, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (394, 25),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (394, 32),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (394, 38),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (394, 45),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "http_sd_config",
                     position: (394, 55),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of HTTP service discovery configurations.\n",
                  position: (395, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "kubernetes_sd_configs",
                position: (398, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (398, 31),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (398, 38),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (398, 44),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (398, 51),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "kubernetes_sd_config",
                     position: (398, 61),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Kubernetes service discovery configurations.\n",
                  position: (399, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "kuma_sd_configs",
                position: (402, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (402, 25),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (402, 32),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (402, 38),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (402, 45),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "kuma_sd_config",
                     position: (402, 55),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Kuma service discovery configurations.\n",
                  position: (403, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "lightsail_sd_configs",
                position: (406, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (406, 30),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (406, 37),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (406, 43),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (406, 50),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "lightsail_sd_config",
                     position: (406, 60),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Lightsail service discovery configurations.\n",
                  position: (407, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "linode_sd_configs",
                position: (410, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (410, 27),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (410, 34),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (410, 40),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (410, 47),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "linode_sd_config",
                     position: (410, 57),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Linode service discovery configurations.\n",
                  position: (411, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "marathon_sd_configs",
                position: (414, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (414, 29),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (414, 36),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (414, 42),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (414, 49),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "marathon_sd_config",
                     position: (414, 59),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Marathon service discovery configurations.\n",
                  position: (415, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "nerve_sd_configs",
                position: (418, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (418, 26),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (418, 33),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (418, 39),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (418, 46),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "nerve_sd_config",
                     position: (418, 56),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of AirBnB's Nerve service discovery configurations.\n",
                  position: (419, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "openstack_sd_configs",
                position: (422, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (422, 30),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (422, 37),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (422, 43),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (422, 50),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "openstack_sd_config",
                     position: (422, 60),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of OpenStack service discovery configurations.\n",
                  position: (423, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "puppetdb_sd_configs",
                position: (426, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (426, 29),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (426, 36),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (426, 42),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (426, 49),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "puppetdb_sd_config",
                     position: (426, 59),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of PuppetDB service discovery configurations.\n",
                  position: (427, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "scaleway_sd_configs",
                position: (430, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (430, 29),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (430, 36),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (430, 42),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (430, 49),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "scaleway_sd_config",
                     position: (430, 59),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Scaleway service discovery configurations.\n",
                  position: (431, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "serverset_sd_configs",
                position: (434, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (434, 30),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (434, 37),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (434, 43),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (434, 50),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "serverset_sd_config",
                     position: (434, 60),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Zookeeper Serverset service discovery configurations.\n",
                  position: (435, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "triton_sd_configs",
                position: (438, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (438, 27),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (438, 34),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (438, 40),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (438, 47),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "triton_sd_config",
                     position: (438, 57),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Triton Serverset service discovery configurations.\n",
                  position: (439, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "uyuni_sd_configs",
                position: (442, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (442, 26),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (442, 33),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (442, 39),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (442, 46),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "uyuni_sd_config",
                     position: (442, 56),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of Uyuni Serverset service discovery configurations.\n",
                  position: (443, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "static_configs",
                position: (446, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (446, 24),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (446, 31),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (446, 37),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (446, 44),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "static_config",
                     position: (446, 54),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of labeled target groups for this job.\n",
                  position: (447, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "relabel_configs",
                position: (450, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (450, 25),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (450, 32),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (450, 38),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (450, 45),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "relabel_config",
                     position: (450, 55),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of relabel configurations.\n",
                  position: (451, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "metric_relabel_configs",
                position: (454, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (454, 32),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (454, 39),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (454, 45),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (454, 52),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "relabel_config",
                     position: (454, 62),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of metric relabel configurations.\n",
                  position: (455, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "body_size_limit",
                position: (458, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (458, 25),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (458, 34),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (458, 40),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "0",
                  position: (458, 45),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "An uncompressed response body larger than this many bytes will cause the\nscrape to fail. 0 means no limit. Example: 100MB.\nThis is an experimental feature, this behaviour could\nchange or be removed in the future.\n",
                  position: (459, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "sample_limit",
                position: (465, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (465, 22),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (465, 31),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (465, 37),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "0",
                  position: (465, 42),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Per-scrape limit on number of scraped samples that will be accepted.\nIf more than this number of samples are present after metric relabelling\nthe entire scrape will be treated as failed. 0 means no limit.\n",
                  position: (466, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "label_limit",
                position: (471, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (471, 21),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (471, 30),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (471, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "0",
                  position: (471, 41),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Per-scrape limit on number of labels that will be accepted for a sample. If\nmore than this number of labels are present post metric-relabeling, the\nentire scrape will be treated as failed. 0 means no limit.\n",
                  position: (472, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "label_name_length_limit",
                position: (477, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (477, 33),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (477, 42),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (477, 48),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "0",
                  position: (477, 53),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Per-scrape limit on length of labels name that will be accepted for a sample.\nIf a label name is longer than this number post metric-relabeling, the entire\nscrape will be treated as failed. 0 means no limit.\n",
                  position: (478, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "label_value_length_limit",
                position: (483, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (483, 34),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (483, 43),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (483, 49),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "0",
                  position: (483, 54),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Per-scrape limit on length of labels value that will be accepted for a sample.\nIf a label value is longer than this number post metric-relabeling, the\nentire scrape will be treated as failed. 0 means no limit.\n",
                  position: (484, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "target_limit",
                position: (489, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (489, 22),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (489, 31),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (489, 37),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "0",
                  position: (489, 42),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Per-scrape config limit on number of unique targets that will be\naccepted. If more than this number of targets are present after target\nrelabeling, Prometheus will mark the targets as failed without scraping them.\n0 means no limit. This is an experimental feature, this behaviour could\nchange in the future.\n",
                  position: (490, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (253, 15),
          },
         ),
        ],
        recursive: false,
        position: (252, 45),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (506, 3),
       },
       Raw {
        content: "azure_sd_config",
        position: (506, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (506, 31),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (506, 37),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (507, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "environment",
                position: (508, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (508, 21),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (508, 30),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (508, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "AzurePublicCloud",
                  position: (508, 41),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The Azure environment.\n",
                  position: (509, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "authentication_method",
                position: (512, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (512, 31),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (512, 41),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "enum",
                    position: (512, 47),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 List {
                  elements: [
                   String {
                    parts: [
                     Raw {
                      content: "OAuth",
                      position: (512, 55),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "ManagedIdentity",
                      position: (512, 63),
                     },
                    ],
                   },
                  ],
                  position: (512, 52),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "OAuth",
                  position: (512, 84),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The authentication method, either OAuth or ManagedIdentity.\nSee https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview\n",
                  position: (513, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "subscription_id",
                position: (517, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (517, 25),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (518, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (518, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (518, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (519, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The subscription ID.\n",
                     position: (520, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (517, 34),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tenant_id",
                position: (524, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (524, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (524, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (524, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Optional tenant ID. Only required with authentication_method OAuth.\n",
                  position: (525, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "client_id",
                position: (528, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (528, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (528, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (528, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Optional client ID. Only required with authentication_method OAuth.\n",
                  position: (529, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "client_secret",
                position: (532, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (532, 23),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (532, 29),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (532, 35),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Optional client secret. Only required with authentication_method OAuth.\n",
                  position: (533, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (536, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (536, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (536, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (536, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "300s",
                  position: (536, 46),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Refresh interval to re-read the instance list.\n",
                  position: (537, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "port",
                position: (540, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (540, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (540, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (540, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "80",
                  position: (540, 34),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The port to scrape metrics from. If using the public IP\naddress, this must instead be specified in the relabeling\nrule.\n",
                  position: (541, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "proxy_url",
                position: (546, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (546, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (546, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (546, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Optional proxy URL.\n",
                  position: (547, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "follow_redirects",
                position: (550, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (550, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (550, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "bool",
                   position: (550, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "true",
                  position: (550, 47),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Configure whether HTTP requests follow HTTP 3xx redirects.\n",
                  position: (551, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tls_config",
                position: (554, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (554, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (554, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "tls_config",
                   position: (554, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "TLS configuration.\n",
                  position: (555, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (507, 15),
          },
         ),
        ],
        recursive: false,
        position: (506, 47),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (560, 3),
       },
       Raw {
        content: "consul_sd_config",
        position: (560, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (560, 32),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "server",
             position: (561, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (561, 14),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (561, 23),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (561, 29),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "localhost:8500",
               position: (561, 34),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "Consul server to query.\n",
               position: (562, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "token",
             position: (565, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (565, 13),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (565, 19),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (565, 25),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "Consul token",
               position: (565, 30),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "datacenter",
             position: (567, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (567, 18),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (567, 24),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (567, 30),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "Consul datacenter",
               position: (567, 35),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "scheme",
             position: (569, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (569, 14),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (569, 23),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (569, 29),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "http",
               position: (569, 34),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "Consul scheme",
               position: (569, 41),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "username",
             position: (571, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (571, 16),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (571, 22),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (571, 28),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "Consul username",
               position: (571, 33),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "password",
             position: (573, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (573, 16),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (573, 22),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (573, 28),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "Consul password",
               position: (573, 33),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "tls_config",
             position: (575, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (575, 18),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "promTypes",
              position: (575, 24),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "tls_config",
                position: (575, 34),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "Configures the Consul request's TLS settings.\n",
               position: (576, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "services",
             position: (579, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (579, 16),
           },
           arguments: [
            FunctionApplication {
             function: PropertyAccess {
              expression: Variable {
               identifier: "types",
               position: (579, 23),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "listOf",
                 position: (579, 29),
                },
               ],
              },
              default: None,
             },
             arguments: [
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (579, 36),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "str",
                  position: (579, 42),
                 },
                ],
               },
               default: None,
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "A list of services for which targets are retrieved.\n",
               position: (580, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "tags",
             position: (583, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (583, 12),
           },
           arguments: [
            FunctionApplication {
             function: PropertyAccess {
              expression: Variable {
               identifier: "types",
               position: (583, 19),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "listOf",
                 position: (583, 25),
                },
               ],
              },
              default: None,
             },
             arguments: [
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (583, 32),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "str",
                  position: (583, 38),
                 },
                ],
               },
               default: None,
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "An optional list of tags used to filter nodes for a given\nservice. Services must contain all tags in the list.\n",
               position: (584, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "node_meta",
             position: (588, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (588, 17),
           },
           arguments: [
            FunctionApplication {
             function: PropertyAccess {
              expression: Variable {
               identifier: "types",
               position: (588, 24),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "attrsOf",
                 position: (588, 30),
                },
               ],
              },
              default: None,
             },
             arguments: [
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (588, 38),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "str",
                  position: (588, 44),
                 },
                ],
               },
               default: None,
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "Node metadata used to filter nodes for a given service.\n",
               position: (589, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "tag_separator",
             position: (592, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (592, 21),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (592, 30),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (592, 36),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: ",",
               position: (592, 41),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The string by which Consul tags are joined into the tag label.\n",
               position: (593, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "allow_stale",
             position: (596, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (596, 19),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (596, 25),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "bool",
                position: (596, 31),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "Allow stale Consul results\n(see <link xlink:href=\"https://www.consul.io/api/index.html#consistency-modes\"/>).\n\nWill reduce load on Consul.\n",
               position: (597, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "refresh_interval",
             position: (603, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (603, 24),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (603, 33),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (603, 39),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "30s",
               position: (603, 44),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The time after which the provided names are refreshed.\n\nOn large setup it might be a good idea to increase this value\nbecause the catalog will change all the time.\n",
               position: (604, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (560, 49),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (611, 3),
       },
       Raw {
        content: "digitalocean_sd_config",
        position: (611, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (611, 38),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "port",
             position: (612, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (612, 12),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (612, 21),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "int",
                position: (612, 27),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "80",
               position: (612, 32),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The port to scrape metrics from.\n",
               position: (613, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "refresh_interval",
             position: (616, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (616, 24),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (616, 33),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (616, 39),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "60s",
               position: (616, 44),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The time after which the droplets are refreshed.\n",
               position: (617, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (611, 55),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "mkDockerSdConfigModule",
        position: (621, 3),
       },
      ],
     },
     Function {
      argument: Some(
       "extraOptions",
      ),
      arguments: FunctionArguments {
       arguments: [],
       ellipsis: false,
      },
      definition: FunctionApplication {
       function: Variable {
        identifier: "mkSdConfigModule",
        position: (621, 42),
       },
       arguments: [
        BinaryOperation {
         operator: Update,
         operands: [
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "host",
                position: (622, 5),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (622, 12),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (623, 7),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (623, 14),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (623, 20),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (624, 7),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Address of the Docker daemon.\n",
                     position: (625, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (622, 21),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "port",
                position: (629, 5),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (629, 12),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (629, 21),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (629, 27),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "80",
                  position: (629, 32),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The port to scrape metrics from, when `role` is nodes, and for discovered\ntasks and services that don't have published ports.\n",
                  position: (630, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "filters",
                position: (634, 5),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (634, 15),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (635, 8),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (635, 14),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 FunctionApplication {
                  function: PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (635, 22),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "submodule",
                      position: (635, 28),
                     },
                    ],
                   },
                   default: None,
                  },
                  arguments: [
                   Map {
                    bindings: [
                     KeyValue(
                      AttributePath {
                       attributes: [
                        Raw {
                         content: "options",
                         position: (636, 9),
                        },
                       ],
                      },
                      Map {
                       bindings: [
                        KeyValue(
                         AttributePath {
                          attributes: [
                           Raw {
                            content: "name",
                            position: (637, 11),
                           },
                          ],
                         },
                         FunctionApplication {
                          function: Variable {
                           identifier: "mkOption",
                           position: (637, 18),
                          },
                          arguments: [
                           Map {
                            bindings: [
                             KeyValue(
                              AttributePath {
                               attributes: [
                                Raw {
                                 content: "type",
                                 position: (638, 13),
                                },
                               ],
                              },
                              PropertyAccess {
                               expression: Variable {
                                identifier: "types",
                                position: (638, 20),
                               },
                               attribute_path: AttributePath {
                                attributes: [
                                 Raw {
                                  content: "str",
                                  position: (638, 26),
                                 },
                                ],
                               },
                               default: None,
                              },
                             ),
                             KeyValue(
                              AttributePath {
                               attributes: [
                                Raw {
                                 content: "description",
                                 position: (639, 13),
                                },
                               ],
                              },
                              String {
                               parts: [
                                Raw {
                                 content: "Name of the filter. The available filters are listed in the upstream documentation:\nServices: <link xlink:href=\"https://docs.docker.com/engine/api/v1.40/#operation/ServiceList\"/>\nTasks: <link xlink:href=\"https://docs.docker.com/engine/api/v1.40/#operation/TaskList\"/>\nNodes: <link xlink:href=\"https://docs.docker.com/engine/api/v1.40/#operation/NodeList\"/>\n",
                                 position: (640, 1),
                                },
                               ],
                              },
                             ),
                            ],
                            recursive: false,
                            position: (637, 27),
                           },
                          ],
                         },
                        ),
                        KeyValue(
                         AttributePath {
                          attributes: [
                           Raw {
                            content: "values",
                            position: (646, 11),
                           },
                          ],
                         },
                         FunctionApplication {
                          function: Variable {
                           identifier: "mkOption",
                           position: (646, 20),
                          },
                          arguments: [
                           Map {
                            bindings: [
                             KeyValue(
                              AttributePath {
                               attributes: [
                                Raw {
                                 content: "type",
                                 position: (647, 13),
                                },
                               ],
                              },
                              PropertyAccess {
                               expression: Variable {
                                identifier: "types",
                                position: (647, 20),
                               },
                               attribute_path: AttributePath {
                                attributes: [
                                 Raw {
                                  content: "str",
                                  position: (647, 26),
                                 },
                                ],
                               },
                               default: None,
                              },
                             ),
                             KeyValue(
                              AttributePath {
                               attributes: [
                                Raw {
                                 content: "description",
                                 position: (648, 13),
                                },
                               ],
                              },
                              String {
                               parts: [
                                Raw {
                                 content: "Value for the filter.\n",
                                 position: (649, 1),
                                },
                               ],
                              },
                             ),
                            ],
                            recursive: false,
                            position: (646, 29),
                           },
                          ],
                         },
                        ),
                       ],
                       recursive: false,
                       position: (636, 19),
                      },
                     ),
                    ],
                    recursive: false,
                    position: (635, 38),
                   },
                  ],
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Optional filters to limit the discovery process to a subset of available resources.\n",
                  position: (654, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (657, 5),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (657, 24),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (657, 33),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (657, 39),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "60s",
                  position: (657, 44),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The time after which the containers are refreshed.\n",
                  position: (658, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (621, 60),
          },
          Variable {
           identifier: "extraOptions",
           position: (660, 8),
          },
         ],
         position: (660, 5),
        },
       ],
      },
      position: (621, 28),
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (662, 3),
       },
       Raw {
        content: "docker_sd_config",
        position: (662, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkDockerSdConfigModule",
       position: (662, 32),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "host_networking_host",
             position: (663, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (663, 28),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (663, 37),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (663, 43),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "localhost",
               position: (663, 48),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The host to use if the container is in host networking mode.\n",
               position: (664, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (662, 55),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (668, 3),
       },
       Raw {
        content: "dockerswarm_sd_config",
        position: (668, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkDockerSdConfigModule",
       position: (668, 37),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "role",
             position: (669, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (669, 12),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (670, 7),
                 },
                ],
               },
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (670, 14),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "enum",
                    position: (670, 20),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 List {
                  elements: [
                   String {
                    parts: [
                     Raw {
                      content: "services",
                      position: (670, 28),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "tasks",
                      position: (670, 39),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "nodes",
                      position: (670, 47),
                     },
                    ],
                   },
                  ],
                  position: (670, 25),
                 },
                ],
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (671, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Role of the targets to retrieve. Must be `services`, `tasks`, or `nodes`.\n",
                  position: (672, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (669, 21),
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (668, 60),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (677, 3),
       },
       Raw {
        content: "dns_sd_config",
        position: (677, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (677, 29),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (677, 35),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (678, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "names",
                position: (679, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (679, 15),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (680, 9),
                    },
                   ],
                  },
                  FunctionApplication {
                   function: PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (680, 16),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "listOf",
                       position: (680, 22),
                      },
                     ],
                    },
                    default: None,
                   },
                   arguments: [
                    PropertyAccess {
                     expression: Variable {
                      identifier: "types",
                      position: (680, 29),
                     },
                     attribute_path: AttributePath {
                      attributes: [
                       Raw {
                        content: "str",
                        position: (680, 35),
                       },
                      ],
                     },
                     default: None,
                    },
                   ],
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (681, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "A list of DNS SRV record names to be queried.\n",
                     position: (682, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (679, 24),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "type",
                position: (686, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (686, 14),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (686, 24),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "enum",
                    position: (686, 30),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 List {
                  elements: [
                   String {
                    parts: [
                     Raw {
                      content: "SRV",
                      position: (686, 38),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "A",
                      position: (686, 44),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "AAAA",
                      position: (686, 48),
                     },
                    ],
                   },
                  ],
                  position: (686, 35),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "SRV",
                  position: (686, 58),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The type of DNS query to perform. One of SRV, A, or AAAA.\n",
                  position: (687, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "port",
                position: (690, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (690, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (690, 20),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (690, 26),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "The port number used if the query type is not SRV.\n",
                  position: (691, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (694, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (694, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (694, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (694, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "30s",
                  position: (694, 46),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The time after which the provided names are refreshed.\n",
                  position: (695, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (678, 15),
          },
         ),
        ],
        recursive: false,
        position: (677, 45),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (700, 3),
       },
       Raw {
        content: "ec2_sd_config",
        position: (700, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (700, 29),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (700, 35),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (701, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "region",
                position: (702, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (702, 16),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (703, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (703, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (703, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (704, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The AWS Region. If blank, the region from the instance metadata is used.\n",
                     position: (705, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (702, 25),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "endpoint",
                position: (708, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (708, 18),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (708, 24),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (708, 30),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Custom endpoint to be used.\n",
                  position: (709, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "access_key",
                position: (712, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (712, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (712, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (712, 32),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "The AWS API key id. If blank, the environment variable\n<literal>AWS_ACCESS_KEY_ID</literal> is used.\n",
                  position: (713, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "secret_key",
                position: (717, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (717, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (717, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (717, 32),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "The AWS API key secret. If blank, the environment variable\n <literal>AWS_SECRET_ACCESS_KEY</literal> is used.\n",
                  position: (718, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "profile",
                position: (722, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (722, 17),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (722, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (722, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Named AWS profile used to connect to the API.\n",
                  position: (723, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "role_arn",
                position: (726, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (726, 18),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (726, 24),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (726, 30),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "AWS Role ARN, an alternative to using AWS API keys.\n",
                  position: (727, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (730, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (730, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (730, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (730, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "60s",
                  position: (730, 46),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Refresh interval to re-read the instance list.\n",
                  position: (731, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "port",
                position: (734, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (734, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (734, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (734, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "80",
                  position: (734, 34),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The port to scrape metrics from. If using the public IP\naddress, this must instead be specified in the relabeling\nrule.\n",
                  position: (735, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "filters",
                position: (740, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (740, 17),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (741, 10),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (741, 16),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 FunctionApplication {
                  function: PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (741, 24),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "submodule",
                      position: (741, 30),
                     },
                    ],
                   },
                   default: None,
                  },
                  arguments: [
                   Map {
                    bindings: [
                     KeyValue(
                      AttributePath {
                       attributes: [
                        Raw {
                         content: "options",
                         position: (742, 11),
                        },
                       ],
                      },
                      Map {
                       bindings: [
                        KeyValue(
                         AttributePath {
                          attributes: [
                           Raw {
                            content: "name",
                            position: (743, 13),
                           },
                          ],
                         },
                         FunctionApplication {
                          function: Variable {
                           identifier: "mkOption",
                           position: (743, 20),
                          },
                          arguments: [
                           Map {
                            bindings: [
                             KeyValue(
                              AttributePath {
                               attributes: [
                                Raw {
                                 content: "type",
                                 position: (744, 15),
                                },
                               ],
                              },
                              PropertyAccess {
                               expression: Variable {
                                identifier: "types",
                                position: (744, 22),
                               },
                               attribute_path: AttributePath {
                                attributes: [
                                 Raw {
                                  content: "str",
                                  position: (744, 28),
                                 },
                                ],
                               },
                               default: None,
                              },
                             ),
                             KeyValue(
                              AttributePath {
                               attributes: [
                                Raw {
                                 content: "description",
                                 position: (745, 15),
                                },
                               ],
                              },
                              String {
                               parts: [
                                Raw {
                                 content: "See <link xlink:href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html\">this list</link>\nfor the available filters.\n",
                                 position: (746, 1),
                                },
                               ],
                              },
                             ),
                            ],
                            recursive: false,
                            position: (743, 29),
                           },
                          ],
                         },
                        ),
                        KeyValue(
                         AttributePath {
                          attributes: [
                           Raw {
                            content: "values",
                            position: (751, 13),
                           },
                          ],
                         },
                         FunctionApplication {
                          function: Variable {
                           identifier: "mkOption",
                           position: (751, 22),
                          },
                          arguments: [
                           Map {
                            bindings: [
                             KeyValue(
                              AttributePath {
                               attributes: [
                                Raw {
                                 content: "type",
                                 position: (752, 15),
                                },
                               ],
                              },
                              FunctionApplication {
                               function: PropertyAccess {
                                expression: Variable {
                                 identifier: "types",
                                 position: (752, 22),
                                },
                                attribute_path: AttributePath {
                                 attributes: [
                                  Raw {
                                   content: "listOf",
                                   position: (752, 28),
                                  },
                                 ],
                                },
                                default: None,
                               },
                               arguments: [
                                PropertyAccess {
                                 expression: Variable {
                                  identifier: "types",
                                  position: (752, 35),
                                 },
                                 attribute_path: AttributePath {
                                  attributes: [
                                   Raw {
                                    content: "str",
                                    position: (752, 41),
                                   },
                                  ],
                                 },
                                 default: None,
                                },
                               ],
                              },
                             ),
                             KeyValue(
                              AttributePath {
                               attributes: [
                                Raw {
                                 content: "default",
                                 position: (753, 15),
                                },
                               ],
                              },
                              List {
                               elements: [],
                               position: (753, 25),
                              },
                             ),
                             KeyValue(
                              AttributePath {
                               attributes: [
                                Raw {
                                 content: "description",
                                 position: (754, 15),
                                },
                               ],
                              },
                              String {
                               parts: [
                                Raw {
                                 content: "Value of the filter.\n",
                                 position: (755, 1),
                                },
                               ],
                              },
                             ),
                            ],
                            recursive: false,
                            position: (751, 31),
                           },
                          ],
                         },
                        ),
                       ],
                       recursive: false,
                       position: (742, 21),
                      },
                     ),
                    ],
                    recursive: false,
                    position: (741, 40),
                   },
                  ],
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Filters can be used optionally to filter the instance list by other criteria.\n",
                  position: (760, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (701, 15),
          },
         ),
        ],
        recursive: false,
        position: (700, 45),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (765, 3),
       },
       Raw {
        content: "eureka_sd_config",
        position: (765, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (765, 32),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "server",
             position: (766, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (766, 14),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (767, 7),
                 },
                ],
               },
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (767, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (767, 20),
                  },
                 ],
                },
                default: None,
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (768, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The URL to connect to the Eureka server.\n",
                  position: (769, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (766, 23),
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (765, 49),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (774, 3),
       },
       Raw {
        content: "file_sd_config",
        position: (774, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (774, 30),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (774, 36),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (775, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "files",
                position: (776, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (776, 15),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (777, 9),
                    },
                   ],
                  },
                  FunctionApplication {
                   function: PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (777, 16),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "listOf",
                       position: (777, 22),
                      },
                     ],
                    },
                    default: None,
                   },
                   arguments: [
                    PropertyAccess {
                     expression: Variable {
                      identifier: "types",
                      position: (777, 29),
                     },
                     attribute_path: AttributePath {
                      attributes: [
                       Raw {
                        content: "str",
                        position: (777, 35),
                       },
                      ],
                     },
                     default: None,
                    },
                   ],
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (778, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Patterns for files from which target groups are extracted. Refer\nto the Prometheus documentation for permitted filename patterns\nand formats.\n",
                     position: (779, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (776, 24),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (785, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (785, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (785, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (785, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "5m",
                  position: (785, 46),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Refresh interval to re-read the files.\n",
                  position: (786, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (775, 15),
          },
         ),
        ],
        recursive: false,
        position: (774, 46),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (791, 3),
       },
       Raw {
        content: "gce_sd_config",
        position: (791, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (791, 29),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (791, 35),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (792, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "project",
                position: (795, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (795, 17),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (796, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (796, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (796, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (797, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The GCP Project.\n",
                     position: (798, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (795, 26),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "zone",
                position: (802, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (802, 14),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (803, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (803, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (803, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (804, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The zone of the scrape targets. If you need multiple zones use multiple\ngce_sd_configs.\n",
                     position: (805, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (802, 23),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "filter",
                position: (810, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (810, 16),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (810, 22),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (810, 28),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Filter can be used optionally to filter the instance list by other\ncriteria Syntax of this filter string is described here in the filter\nquery parameter section: <link\nxlink:href=\"https://cloud.google.com/compute/docs/reference/latest/instances/list\"\n/>.\n",
                  position: (811, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (818, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (818, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (818, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (818, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "60s",
                  position: (818, 46),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Refresh interval to re-read the cloud instance list.\n",
                  position: (819, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "port",
                position: (822, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (822, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (822, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "port",
                   position: (822, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "80",
                  position: (822, 35),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The port to scrape metrics from. If using the public IP address, this\nmust instead be specified in the relabeling rule.\n",
                  position: (823, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tag_separator",
                position: (827, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (827, 23),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (827, 32),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (827, 38),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: ",",
                  position: (827, 43),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The tag separator used to separate concatenated GCE instance network tags.\n\nSee the GCP documentation on network tags for more information:\n<link xlink:href=\"https://cloud.google.com/vpc/docs/add-remove-network-tags\" />\n",
                  position: (828, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (792, 15),
          },
         ),
        ],
        recursive: false,
        position: (791, 45),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (836, 3),
       },
       Raw {
        content: "hetzner_sd_config",
        position: (836, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (836, 33),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "role",
             position: (837, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (837, 12),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (838, 7),
                 },
                ],
               },
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (838, 14),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "enum",
                    position: (838, 20),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 List {
                  elements: [
                   String {
                    parts: [
                     Raw {
                      content: "robot",
                      position: (838, 28),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "hcloud",
                      position: (838, 36),
                     },
                    ],
                   },
                  ],
                  position: (838, 25),
                 },
                ],
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (839, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The Hetzner role of entities that should be discovered.\nOne of <literal>robot</literal> or <literal>hcloud</literal>.\n",
                  position: (840, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (837, 21),
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "port",
             position: (845, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (845, 12),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (845, 21),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "int",
                position: (845, 27),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "80",
               position: (845, 32),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The port to scrape metrics from.\n",
               position: (846, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "refresh_interval",
             position: (849, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (849, 24),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (849, 33),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (849, 39),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "60s",
               position: (849, 44),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The time after which the servers are refreshed.\n",
               position: (850, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (836, 50),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (854, 3),
       },
       Raw {
        content: "http_sd_config",
        position: (854, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (854, 30),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (854, 36),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (855, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "url",
                position: (856, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (856, 13),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (857, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (857, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (857, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (858, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "URL from which the targets are fetched.\n",
                     position: (859, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (856, 22),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (863, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (863, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (863, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (863, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "60s",
                  position: (863, 46),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Refresh interval to re-query the endpoint.\n",
                  position: (864, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "basic_auth",
                position: (867, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (867, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (867, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "basic_auth",
                   position: (867, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Authentication information used to authenticate to the API server.\npassword and password_file are mutually exclusive.\n",
                  position: (868, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "proxy_url",
                position: (872, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (872, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (872, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (872, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Optional proxy URL.\n",
                  position: (873, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "follow_redirects",
                position: (876, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (876, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (876, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "bool",
                   position: (876, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "true",
                  position: (876, 47),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Configure whether HTTP requests follow HTTP 3xx redirects.\n",
                  position: (877, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tls_config",
                position: (880, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (880, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (880, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "tls_config",
                   position: (880, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Configures the scrape request's TLS settings.\n",
                  position: (881, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (855, 15),
          },
         ),
        ],
        recursive: false,
        position: (854, 46),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (886, 3),
       },
       Raw {
        content: "kubernetes_sd_config",
        position: (886, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (886, 36),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "api_server",
             position: (887, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (887, 18),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (887, 24),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (887, 30),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "The API server addresses. If left empty, Prometheus is assumed to run inside\nof the cluster and will discover API servers automatically and use the pod's\nCA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.\n",
               position: (888, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "role",
             position: (893, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (893, 12),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (894, 7),
                 },
                ],
               },
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (894, 14),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "enum",
                    position: (894, 20),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 List {
                  elements: [
                   String {
                    parts: [
                     Raw {
                      content: "endpoints",
                      position: (894, 28),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "service",
                      position: (894, 40),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "pod",
                      position: (894, 50),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "node",
                      position: (894, 56),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "ingress",
                      position: (894, 63),
                     },
                    ],
                   },
                  ],
                  position: (894, 25),
                 },
                ],
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (895, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The Kubernetes role of entities that should be discovered.\nOne of endpoints, service, pod, node, or ingress.\n",
                  position: (896, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (893, 21),
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "kubeconfig_file",
             position: (901, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (901, 23),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (901, 29),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (901, 35),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "Optional path to a kubeconfig file.\nNote that api_server and kube_config are mutually exclusive.\n",
               position: (902, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "namespaces",
             position: (906, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (906, 18),
           },
           arguments: [
            FunctionApplication {
             function: PropertyAccess {
              expression: Variable {
               identifier: "types",
               position: (908, 9),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "submodule",
                 position: (908, 15),
                },
               ],
              },
              default: None,
             },
             arguments: [
              Map {
               bindings: [
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "options",
                    position: (909, 11),
                   },
                  ],
                 },
                 Map {
                  bindings: [
                   KeyValue(
                    AttributePath {
                     attributes: [
                      Raw {
                       content: "names",
                       position: (910, 13),
                      },
                     ],
                    },
                    FunctionApplication {
                     function: Variable {
                      identifier: "mkOpt",
                      position: (910, 21),
                     },
                     arguments: [
                      FunctionApplication {
                       function: PropertyAccess {
                        expression: Variable {
                         identifier: "types",
                         position: (910, 28),
                        },
                        attribute_path: AttributePath {
                         attributes: [
                          Raw {
                           content: "listOf",
                           position: (910, 34),
                          },
                         ],
                        },
                        default: None,
                       },
                       arguments: [
                        PropertyAccess {
                         expression: Variable {
                          identifier: "types",
                          position: (910, 41),
                         },
                         attribute_path: AttributePath {
                          attributes: [
                           Raw {
                            content: "str",
                            position: (910, 47),
                           },
                          ],
                         },
                         default: None,
                        },
                       ],
                      },
                      String {
                       parts: [
                        Raw {
                         content: "Namespace name.\n",
                         position: (911, 1),
                        },
                       ],
                      },
                     ],
                    },
                   ),
                  ],
                  recursive: false,
                  position: (909, 21),
                 },
                ),
               ],
               recursive: false,
               position: (908, 25),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "Optional namespace discovery. If omitted, all namespaces are used.\n",
               position: (916, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "selectors",
             position: (919, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (919, 17),
           },
           arguments: [
            FunctionApplication {
             function: PropertyAccess {
              expression: Variable {
               identifier: "types",
               position: (921, 9),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "listOf",
                 position: (921, 15),
                },
               ],
              },
              default: None,
             },
             arguments: [
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (922, 11),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "submodule",
                   position: (922, 17),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                Map {
                 bindings: [
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "options",
                      position: (923, 13),
                     },
                    ],
                   },
                   Map {
                    bindings: [
                     KeyValue(
                      AttributePath {
                       attributes: [
                        Raw {
                         content: "role",
                         position: (924, 15),
                        },
                       ],
                      },
                      FunctionApplication {
                       function: Variable {
                        identifier: "mkOption",
                        position: (924, 22),
                       },
                       arguments: [
                        Map {
                         bindings: [
                          KeyValue(
                           AttributePath {
                            attributes: [
                             Raw {
                              content: "type",
                              position: (925, 17),
                             },
                            ],
                           },
                           PropertyAccess {
                            expression: Variable {
                             identifier: "types",
                             position: (925, 24),
                            },
                            attribute_path: AttributePath {
                             attributes: [
                              Raw {
                               content: "str",
                               position: (925, 30),
                              },
                             ],
                            },
                            default: None,
                           },
                          ),
                          KeyValue(
                           AttributePath {
                            attributes: [
                             Raw {
                              content: "description",
                              position: (926, 17),
                             },
                            ],
                           },
                           String {
                            parts: [
                             Raw {
                              content: "Selector role\n",
                              position: (927, 1),
                             },
                            ],
                           },
                          ),
                         ],
                         recursive: false,
                         position: (924, 31),
                        },
                       ],
                      },
                     ),
                     KeyValue(
                      AttributePath {
                       attributes: [
                        Raw {
                         content: "label",
                         position: (931, 15),
                        },
                       ],
                      },
                      FunctionApplication {
                       function: Variable {
                        identifier: "mkOpt",
                        position: (931, 23),
                       },
                       arguments: [
                        PropertyAccess {
                         expression: Variable {
                          identifier: "types",
                          position: (931, 29),
                         },
                         attribute_path: AttributePath {
                          attributes: [
                           Raw {
                            content: "str",
                            position: (931, 35),
                           },
                          ],
                         },
                         default: None,
                        },
                        String {
                         parts: [
                          Raw {
                           content: "Selector label\n",
                           position: (932, 1),
                          },
                         ],
                        },
                       ],
                      },
                     ),
                     KeyValue(
                      AttributePath {
                       attributes: [
                        Raw {
                         content: "field",
                         position: (935, 15),
                        },
                       ],
                      },
                      FunctionApplication {
                       function: Variable {
                        identifier: "mkOpt",
                        position: (935, 23),
                       },
                       arguments: [
                        PropertyAccess {
                         expression: Variable {
                          identifier: "types",
                          position: (935, 29),
                         },
                         attribute_path: AttributePath {
                          attributes: [
                           Raw {
                            content: "str",
                            position: (935, 35),
                           },
                          ],
                         },
                         default: None,
                        },
                        String {
                         parts: [
                          Raw {
                           content: "Selector field\n",
                           position: (936, 1),
                          },
                         ],
                        },
                       ],
                      },
                     ),
                    ],
                    recursive: false,
                    position: (923, 23),
                   },
                  ),
                 ],
                 recursive: false,
                 position: (922, 27),
                },
               ],
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "Optional label and field selectors to limit the discovery process to a subset of available resources.\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/\nand https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ to learn more about the possible\nfilters that can be used. Endpoints role supports pod, service and endpoints selectors, other roles\nonly support selectors matching the role itself (e.g. node role can only contain node selectors).\n\nNote: When making decision about using field/label selector make sure that this\nis the best approach - it will prevent Prometheus from reusing single list/watch\nfor all scrape configs. This might result in a bigger load on the Kubernetes API,\nbecause per each selector combination there will be additional LIST/WATCH. On the other hand,\nif you just want to monitor small subset of pods in large cluster it's recommended to use selectors.\nDecision, if selectors should be used or not depends on the particular situation.\n",
               position: (942, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (886, 53),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (957, 3),
       },
       Raw {
        content: "kuma_sd_config",
        position: (957, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (957, 30),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "server",
             position: (958, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (958, 14),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (959, 7),
                 },
                ],
               },
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (959, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (959, 20),
                  },
                 ],
                },
                default: None,
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (960, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Address of the Kuma Control Plane's MADS xDS server.\n",
                  position: (961, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (958, 23),
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "refresh_interval",
             position: (965, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (965, 24),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (965, 33),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (965, 39),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "30s",
               position: (965, 44),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The time to wait between polling update requests.\n",
               position: (966, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "fetch_timeout",
             position: (969, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (969, 21),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (969, 30),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (969, 36),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "2m",
               position: (969, 41),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The time after which the monitoring assignments are refreshed.\n",
               position: (970, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (957, 47),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (974, 3),
       },
       Raw {
        content: "lightsail_sd_config",
        position: (974, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (974, 35),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (974, 41),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (975, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "region",
                position: (976, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (976, 16),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (976, 22),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (976, 28),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "The AWS region. If blank, the region from the instance metadata is used.\n",
                  position: (977, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "endpoint",
                position: (980, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (980, 18),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (980, 24),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (980, 30),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Custom endpoint to be used.\n",
                  position: (981, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "access_key",
                position: (984, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (984, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (984, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (984, 32),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "The AWS API keys. If blank, the environment variable <literal>AWS_ACCESS_KEY_ID</literal> is used.\n",
                  position: (985, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "secret_key",
                position: (988, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (988, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (988, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (988, 32),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "The AWS API keys. If blank, the environment variable <literal>AWS_SECRET_ACCESS_KEY</literal> is used.\n",
                  position: (989, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "profile",
                position: (992, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (992, 17),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (992, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (992, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Named AWS profile used to connect to the API.\n",
                  position: (993, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "role_arn",
                position: (996, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (996, 18),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (996, 24),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (996, 30),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "AWS Role ARN, an alternative to using AWS API keys.\n",
                  position: (997, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (1000, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1000, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1000, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1000, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "60s",
                  position: (1000, 46),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Refresh interval to re-read the instance list.\n",
                  position: (1001, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "port",
                position: (1004, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1004, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1004, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (1004, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "80",
                  position: (1004, 34),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The port to scrape metrics from. If using the public IP address, this must\ninstead be specified in the relabeling rule.\n",
                  position: (1005, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (975, 15),
          },
         ),
        ],
        recursive: false,
        position: (974, 51),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1011, 3),
       },
       Raw {
        content: "linode_sd_config",
        position: (1011, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (1011, 32),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "port",
             position: (1012, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1012, 12),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1012, 21),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "int",
                position: (1012, 27),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "80",
               position: (1012, 32),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The port to scrape metrics from.\n",
               position: (1013, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "tag_separator",
             position: (1016, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1016, 21),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1016, 30),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (1016, 36),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: ",",
               position: (1016, 41),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The string by which Linode Instance tags are joined into the tag label.\n",
               position: (1017, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "refresh_interval",
             position: (1020, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1020, 24),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1020, 33),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (1020, 39),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "60s",
               position: (1020, 44),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The time after which the linode instances are refreshed.\n",
               position: (1021, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (1011, 49),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1025, 3),
       },
       Raw {
        content: "marathon_sd_config",
        position: (1025, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (1025, 34),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "servers",
             position: (1026, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (1026, 15),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (1027, 7),
                 },
                ],
               },
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1027, 14),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (1027, 20),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "types",
                   position: (1027, 27),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "str",
                     position: (1027, 33),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (1028, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of URLs to be used to contact Marathon servers. You need to provide at least one server URL.\n",
                  position: (1029, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (1026, 24),
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "refresh_interval",
             position: (1033, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1033, 24),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1033, 33),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (1033, 39),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "30s",
               position: (1033, 44),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "Polling interval.\n",
               position: (1034, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "auth_token",
             position: (1037, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (1037, 18),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1037, 24),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (1037, 30),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "Optional authentication information for token-based authentication:\n<link xlink:href=\"https://docs.mesosphere.com/1.11/security/ent/iam-api/#passing-an-authentication-token\" />\nIt is mutually exclusive with <literal>auth_token_file</literal> and other authentication mechanisms.\n",
               position: (1038, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "auth_token_file",
             position: (1043, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOpt",
            position: (1043, 23),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1043, 29),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (1043, 35),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "Optional authentication information for token-based authentication:\n<link xlink:href=\"https://docs.mesosphere.com/1.11/security/ent/iam-api/#passing-an-authentication-token\" />\nIt is mutually exclusive with <literal>auth_token</literal> and other authentication mechanisms.\n",
               position: (1044, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (1025, 51),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1050, 3),
       },
       Raw {
        content: "nerve_sd_config",
        position: (1050, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (1050, 31),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (1050, 37),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (1051, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "servers",
                position: (1052, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1052, 17),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1053, 9),
                    },
                   ],
                  },
                  FunctionApplication {
                   function: PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (1053, 16),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "listOf",
                       position: (1053, 22),
                      },
                     ],
                    },
                    default: None,
                   },
                   arguments: [
                    PropertyAccess {
                     expression: Variable {
                      identifier: "types",
                      position: (1053, 29),
                     },
                     attribute_path: AttributePath {
                      attributes: [
                       Raw {
                        content: "str",
                        position: (1053, 35),
                       },
                      ],
                     },
                     default: None,
                    },
                   ],
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1054, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The Zookeeper servers.\n",
                     position: (1055, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1052, 26),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "paths",
                position: (1059, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1059, 15),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1060, 9),
                    },
                   ],
                  },
                  FunctionApplication {
                   function: PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (1060, 16),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "listOf",
                       position: (1060, 22),
                      },
                     ],
                    },
                    default: None,
                   },
                   arguments: [
                    PropertyAccess {
                     expression: Variable {
                      identifier: "types",
                      position: (1060, 29),
                     },
                     attribute_path: AttributePath {
                      attributes: [
                       Raw {
                        content: "str",
                        position: (1060, 35),
                       },
                      ],
                     },
                     default: None,
                    },
                   ],
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1061, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Paths can point to a single service, or the root of a tree of services.\n",
                     position: (1062, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1059, 24),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "timeout",
                position: (1066, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1066, 17),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1066, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1066, 32),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "10s",
                  position: (1066, 37),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Timeout value.\n",
                  position: (1067, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (1051, 15),
          },
         ),
        ],
        recursive: false,
        position: (1050, 47),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1072, 3),
       },
       Raw {
        content: "openstack_sd_config",
        position: (1072, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (1072, 35),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (1072, 41),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (1073, 5),
            },
           ],
          },
          LetIn {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "userDescription",
                position: (1075, 9),
               },
              ],
             },
             String {
              parts: [
               Raw {
                content: "username is required if using Identity V2 API. Consult with your provider's\ncontrol panel to discover your account's username. In Identity V3, either\nuserid or a combination of username and domain_id or domain_name are needed.\n",
                position: (1076, 1),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "domainDescription",
                position: (1081, 9),
               },
              ],
             },
             String {
              parts: [
               Raw {
                content: "At most one of domain_id and domain_name must be provided if using username\nwith Identity V3. Otherwise, either are optional.\n",
                position: (1082, 1),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "projectDescription",
                position: (1086, 9),
               },
              ],
             },
             String {
              parts: [
               Raw {
                content: "The project_id and project_name fields are optional for the Identity V2 API.\nSome providers allow you to specify a project_name instead of the project_id.\nSome require both. Your provider's authentication policies will determine\nhow these fields influence authentication.\n",
                position: (1087, 1),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "applicationDescription",
                position: (1093, 9),
               },
              ],
             },
             String {
              parts: [
               Raw {
                content: "The application_credential_id or application_credential_name fields are\nrequired if using an application credential to authenticate. Some providers\nallow you to create an application credential to authenticate rather than a\npassword.\n",
                position: (1094, 1),
               },
              ],
             },
            ),
           ],
           target: Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "role",
                 position: (1101, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOption",
                position: (1101, 16),
               },
               arguments: [
                Map {
                 bindings: [
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "type",
                      position: (1102, 11),
                     },
                    ],
                   },
                   PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (1102, 18),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "str",
                       position: (1102, 24),
                      },
                     ],
                    },
                    default: None,
                   },
                  ),
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "description",
                      position: (1103, 11),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "The OpenStack role of entities that should be discovered.\n",
                      position: (1104, 1),
                     },
                    ],
                   },
                  ),
                 ],
                 recursive: false,
                 position: (1101, 25),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "region",
                 position: (1108, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOption",
                position: (1108, 18),
               },
               arguments: [
                Map {
                 bindings: [
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "type",
                      position: (1109, 11),
                     },
                    ],
                   },
                   PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (1109, 18),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "str",
                       position: (1109, 24),
                      },
                     ],
                    },
                    default: None,
                   },
                  ),
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "description",
                      position: (1110, 11),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "The OpenStack Region.\n",
                      position: (1111, 1),
                     },
                    ],
                   },
                  ),
                 ],
                 recursive: false,
                 position: (1108, 27),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "identity_endpoint",
                 position: (1115, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1115, 29),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1115, 35),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1115, 41),
                   },
                  ],
                 },
                 default: None,
                },
                String {
                 parts: [
                  Raw {
                   content: "identity_endpoint specifies the HTTP endpoint that is required to work with\nthe Identity API of the appropriate version. While it's ultimately needed by\nall of the identity services, it will often be populated by a provider-level\nfunction.\n",
                   position: (1116, 1),
                  },
                 ],
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "username",
                 position: (1122, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1122, 20),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1122, 26),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1122, 32),
                   },
                  ],
                 },
                 default: None,
                },
                Variable {
                 identifier: "userDescription",
                 position: (1122, 36),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "userid",
                 position: (1123, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1123, 18),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1123, 24),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1123, 30),
                   },
                  ],
                 },
                 default: None,
                },
                Variable {
                 identifier: "userDescription",
                 position: (1123, 34),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "password",
                 position: (1125, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1125, 20),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1125, 26),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1125, 32),
                   },
                  ],
                 },
                 default: None,
                },
                String {
                 parts: [
                  Raw {
                   content: "password for the Identity V2 and V3 APIs. Consult with your provider's\ncontrol panel to discover your account's preferred method of authentication.\n",
                   position: (1126, 1),
                  },
                 ],
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "domain_name",
                 position: (1130, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1130, 23),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1130, 29),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1130, 35),
                   },
                  ],
                 },
                 default: None,
                },
                Variable {
                 identifier: "domainDescription",
                 position: (1130, 39),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "domain_id",
                 position: (1131, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1131, 21),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1131, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1131, 33),
                   },
                  ],
                 },
                 default: None,
                },
                Variable {
                 identifier: "domainDescription",
                 position: (1131, 37),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "project_name",
                 position: (1133, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1133, 24),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1133, 30),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1133, 36),
                   },
                  ],
                 },
                 default: None,
                },
                Variable {
                 identifier: "projectDescription",
                 position: (1133, 40),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "project_id",
                 position: (1134, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1134, 22),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1134, 28),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1134, 34),
                   },
                  ],
                 },
                 default: None,
                },
                Variable {
                 identifier: "projectDescription",
                 position: (1134, 38),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "application_credential_name",
                 position: (1136, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1136, 39),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1136, 45),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1136, 51),
                   },
                  ],
                 },
                 default: None,
                },
                Variable {
                 identifier: "applicationDescription",
                 position: (1136, 55),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "application_credential_id",
                 position: (1137, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1137, 37),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1137, 43),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1137, 49),
                   },
                  ],
                 },
                 default: None,
                },
                Variable {
                 identifier: "applicationDescription",
                 position: (1137, 53),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "application_credential_secret",
                 position: (1139, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1139, 41),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1139, 47),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1139, 53),
                   },
                  ],
                 },
                 default: None,
                },
                String {
                 parts: [
                  Raw {
                   content: "The application_credential_secret field is required if using an application\ncredential to authenticate.\n",
                   position: (1140, 1),
                  },
                 ],
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "all_tenants",
                 position: (1144, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkDefOpt",
                position: (1144, 23),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1144, 32),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "bool",
                    position: (1144, 38),
                   },
                  ],
                 },
                 default: None,
                },
                String {
                 parts: [
                  Raw {
                   content: "false",
                   position: (1144, 44),
                  },
                 ],
                },
                String {
                 parts: [
                  Raw {
                   content: "Whether the service discovery should list all instances for all projects.\nIt is only relevant for the 'instance' role and usually requires admin permissions.\n",
                   position: (1145, 1),
                  },
                 ],
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "refresh_interval",
                 position: (1149, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkDefOpt",
                position: (1149, 28),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1149, 37),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1149, 43),
                   },
                  ],
                 },
                 default: None,
                },
                String {
                 parts: [
                  Raw {
                   content: "60s",
                   position: (1149, 48),
                  },
                 ],
                },
                String {
                 parts: [
                  Raw {
                   content: "Refresh interval to re-read the instance list.\n",
                   position: (1150, 1),
                  },
                 ],
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "port",
                 position: (1153, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkDefOpt",
                position: (1153, 16),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1153, 25),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "int",
                    position: (1153, 31),
                   },
                  ],
                 },
                 default: None,
                },
                String {
                 parts: [
                  Raw {
                   content: "80",
                   position: (1153, 36),
                  },
                 ],
                },
                String {
                 parts: [
                  Raw {
                   content: "The port to scrape metrics from. If using the public IP address, this must\ninstead be specified in the relabeling rule.\n",
                   position: (1154, 1),
                  },
                 ],
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "availability",
                 position: (1158, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkDefOpt",
                position: (1158, 24),
               },
               arguments: [
                FunctionApplication {
                 function: PropertyAccess {
                  expression: Variable {
                   identifier: "types",
                   position: (1158, 34),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "enum",
                     position: (1158, 40),
                    },
                   ],
                  },
                  default: None,
                 },
                 arguments: [
                  List {
                   elements: [
                    String {
                     parts: [
                      Raw {
                       content: "public",
                       position: (1158, 48),
                      },
                     ],
                    },
                    String {
                     parts: [
                      Raw {
                       content: "admin",
                       position: (1158, 57),
                      },
                     ],
                    },
                    String {
                     parts: [
                      Raw {
                       content: "internal",
                       position: (1158, 65),
                      },
                     ],
                    },
                   ],
                   position: (1158, 45),
                  },
                 ],
                },
                String {
                 parts: [
                  Raw {
                   content: "public",
                   position: (1158, 79),
                  },
                 ],
                },
                String {
                 parts: [
                  Raw {
                   content: "The availability of the endpoint to connect to. Must be one of public, admin or internal.\n",
                   position: (1159, 1),
                  },
                 ],
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "tls_config",
                 position: (1162, 9),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "mkOpt",
                position: (1162, 22),
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "promTypes",
                  position: (1162, 28),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "tls_config",
                    position: (1162, 38),
                   },
                  ],
                 },
                 default: None,
                },
                String {
                 parts: [
                  Raw {
                   content: "TLS configuration.\n",
                   position: (1163, 1),
                  },
                 ],
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1100, 7),
           },
           position: (1074, 7),
          },
         ),
        ],
        recursive: false,
        position: (1072, 51),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1168, 3),
       },
       Raw {
        content: "puppetdb_sd_config",
        position: (1168, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (1168, 34),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "url",
             position: (1169, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (1169, 11),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (1170, 7),
                 },
                ],
               },
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1170, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1170, 20),
                  },
                 ],
                },
                default: None,
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (1171, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The URL of the PuppetDB root query endpoint.\n",
                  position: (1172, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (1169, 20),
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "query",
             position: (1176, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (1176, 13),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (1177, 7),
                 },
                ],
               },
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1177, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1177, 20),
                  },
                 ],
                },
                default: None,
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (1178, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Puppet Query Language (PQL) query. Only resources are supported.\nhttps://puppet.com/docs/puppetdb/latest/api/query/v4/pql.html\n",
                  position: (1179, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (1176, 22),
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "include_parameters",
             position: (1184, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1184, 26),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1184, 35),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "bool",
                position: (1184, 41),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "false",
               position: (1184, 47),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "Whether to include the parameters as meta labels.\nDue to the differences between parameter types and Prometheus labels,\nsome parameters might not be rendered. The format of the parameters might\nalso change in future releases.\n\nNote: Enabling this exposes parameters in the Prometheus UI and API. Make sure\nthat you don't have secrets exposed as parameters if you enable this.\n",
               position: (1185, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "refresh_interval",
             position: (1194, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1194, 24),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1194, 33),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (1194, 39),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "60s",
               position: (1194, 44),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "Refresh interval to re-read the resources list.\n",
               position: (1195, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "port",
             position: (1198, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1198, 12),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1198, 21),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "int",
                position: (1198, 27),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "80",
               position: (1198, 32),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The port to scrape metrics from.\n",
               position: (1199, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (1168, 51),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1203, 3),
       },
       Raw {
        content: "scaleway_sd_config",
        position: (1203, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (1203, 34),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (1203, 40),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (1204, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "access_key",
                position: (1205, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1205, 20),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1206, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (1206, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (1206, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1207, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Access key to use. https://console.scaleway.com/project/credentials\n",
                     position: (1208, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1205, 29),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "secret_key",
                position: (1212, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1212, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1212, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1212, 32),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Secret key to use when listing targets. https://console.scaleway.com/project/credentials\nIt is mutually exclusive with `secret_key_file`.\n",
                  position: (1213, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "secret_key_file",
                position: (1217, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1217, 25),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1217, 31),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1217, 37),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the secret key with the credentials read from the configured file.\nIt is mutually exclusive with `secret_key`.\n",
                  position: (1218, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "project_id",
                position: (1222, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1222, 20),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1223, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (1223, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (1223, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1224, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Project ID of the targets.\n",
                     position: (1225, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1222, 29),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "role",
                position: (1229, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1229, 14),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1230, 9),
                    },
                   ],
                  },
                  FunctionApplication {
                   function: PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (1230, 16),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "enum",
                       position: (1230, 22),
                      },
                     ],
                    },
                    default: None,
                   },
                   arguments: [
                    List {
                     elements: [
                      String {
                       parts: [
                        Raw {
                         content: "instance",
                         position: (1230, 30),
                        },
                       ],
                      },
                      String {
                       parts: [
                        Raw {
                         content: "baremetal",
                         position: (1230, 41),
                        },
                       ],
                      },
                     ],
                     position: (1230, 27),
                    },
                   ],
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1231, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Role of the targets to retrieve. Must be `instance` or `baremetal`.\n",
                     position: (1232, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1229, 23),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "port",
                position: (1236, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1236, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1236, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (1236, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "80",
                  position: (1236, 34),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The port to scrape metrics from.\n",
                  position: (1237, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "api_url",
                position: (1240, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1240, 17),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1240, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1240, 32),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "https://api.scaleway.com",
                  position: (1240, 37),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "API URL to use when doing the server listing requests.\n",
                  position: (1241, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "zone",
                position: (1244, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1244, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1244, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1244, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "fr-par-1",
                  position: (1244, 34),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Zone is the availability zone of your targets (e.g. fr-par-1).\n",
                  position: (1245, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "name_filter",
                position: (1248, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1248, 21),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1248, 27),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1248, 33),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Specify a name filter (works as a LIKE) to apply on the server listing request.\n",
                  position: (1249, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tags_filter",
                position: (1252, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1252, 21),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1252, 28),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (1252, 34),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "types",
                   position: (1252, 41),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "str",
                     position: (1252, 47),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Specify a tag filter (a server needs to have all defined tags to be listed) to apply on the server listing request.\n",
                  position: (1253, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (1256, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1256, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1256, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1256, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "60s",
                  position: (1256, 46),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Refresh interval to re-read the managed targets list.\n",
                  position: (1257, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "proxy_url",
                position: (1260, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1260, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1260, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1260, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Optional proxy URL.\n",
                  position: (1261, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "follow_redirects",
                position: (1264, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1264, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1264, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "bool",
                   position: (1264, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "true",
                  position: (1264, 47),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Configure whether HTTP requests follow HTTP 3xx redirects.\n",
                  position: (1265, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tls_config",
                position: (1268, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1268, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (1268, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "tls_config",
                   position: (1268, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "TLS configuration.\n",
                  position: (1269, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (1204, 15),
          },
         ),
        ],
        recursive: false,
        position: (1203, 50),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1275, 3),
       },
       Raw {
        content: "serverset_sd_config",
        position: (1275, 13),
       },
      ],
     },
     PropertyAccess {
      expression: Variable {
       identifier: "promTypes",
       position: (1275, 35),
      },
      attribute_path: AttributePath {
       attributes: [
        Raw {
         content: "nerve_sd_config",
         position: (1275, 45),
        },
       ],
      },
      default: None,
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1277, 3),
       },
       Raw {
        content: "triton_sd_config",
        position: (1277, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (1277, 32),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (1277, 38),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (1278, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "account",
                position: (1279, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1279, 17),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1280, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (1280, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (1280, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1281, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The account to use for discovering new targets.\n",
                     position: (1282, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1279, 26),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "role",
                position: (1286, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1286, 14),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1286, 24),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "enum",
                    position: (1286, 30),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 List {
                  elements: [
                   String {
                    parts: [
                     Raw {
                      content: "container",
                      position: (1286, 38),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "cn",
                      position: (1286, 50),
                     },
                    ],
                   },
                  ],
                  position: (1286, 35),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "container",
                  position: (1286, 58),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The type of targets to discover, can be set to:\n- \"container\" to discover virtual machines (SmartOS zones, lx/KVM/bhyve branded zones) running on Triton\n- \"cn\" to discover compute nodes (servers/global zones) making up the Triton infrastructure\n",
                  position: (1287, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "dns_suffix",
                position: (1292, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1292, 20),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1293, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (1293, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (1293, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1294, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The DNS suffix which should be applied to target.\n",
                     position: (1295, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1292, 29),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "endpoint",
                position: (1299, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1299, 18),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1300, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (1300, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (1300, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1301, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The Triton discovery endpoint (e.g. <literal>cmon.us-east-3b.triton.zone</literal>). This is\noften the same value as dns_suffix.\n",
                     position: (1302, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1299, 27),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "groups",
                position: (1307, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1307, 16),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1307, 23),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (1307, 29),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "types",
                   position: (1307, 36),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "str",
                     position: (1307, 42),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "A list of groups for which targets are retrieved, only supported when targeting the <literal>container</literal> role.\nIf omitted all containers owned by the requesting account are scraped.\n",
                  position: (1308, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "port",
                position: (1312, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1312, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1312, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (1312, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "9163",
                  position: (1312, 34),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The port to use for discovery and metric scraping.\n",
                  position: (1313, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "refresh_interval",
                position: (1316, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1316, 26),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1316, 35),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1316, 41),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "60s",
                  position: (1316, 46),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The interval which should be used for refreshing targets.\n",
                  position: (1317, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "version",
                position: (1320, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1320, 17),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1320, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (1320, 32),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "1",
                  position: (1320, 37),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The Triton discovery API version.\n",
                  position: (1321, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tls_config",
                position: (1324, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1324, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (1324, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "tls_config",
                   position: (1324, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "TLS configuration.\n",
                  position: (1325, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (1278, 15),
          },
         ),
        ],
        recursive: false,
        position: (1277, 48),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1330, 3),
       },
       Raw {
        content: "uyuni_sd_config",
        position: (1330, 13),
       },
      ],
     },
     FunctionApplication {
      function: Variable {
       identifier: "mkSdConfigModule",
       position: (1330, 31),
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "server",
             position: (1331, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (1331, 14),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (1332, 7),
                 },
                ],
               },
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1332, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1332, 20),
                  },
                 ],
                },
                default: None,
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (1333, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The URL to connect to the Uyuni server.\n",
                  position: (1334, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (1331, 23),
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "username",
             position: (1338, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (1338, 16),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (1339, 7),
                 },
                ],
               },
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1339, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1339, 20),
                  },
                 ],
                },
                default: None,
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (1340, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Credentials are used to authenticate the requests to Uyuni API.\n",
                  position: (1341, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (1338, 25),
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "password",
             position: (1345, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkOption",
            position: (1345, 16),
           },
           arguments: [
            Map {
             bindings: [
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "type",
                  position: (1346, 7),
                 },
                ],
               },
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1346, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1346, 20),
                  },
                 ],
                },
                default: None,
               },
              ),
              KeyValue(
               AttributePath {
                attributes: [
                 Raw {
                  content: "description",
                  position: (1347, 7),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Credentials are used to authenticate the requests to Uyuni API.\n",
                  position: (1348, 1),
                 },
                ],
               },
              ),
             ],
             recursive: false,
             position: (1345, 25),
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "entitlement",
             position: (1352, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1352, 19),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1352, 28),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (1352, 34),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "monitoring_entitled",
               position: (1352, 39),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The entitlement string to filter eligible systems.\n",
               position: (1353, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "separator",
             position: (1356, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1356, 17),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1356, 26),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (1356, 32),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: ",",
               position: (1356, 37),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "The string by which Uyuni group names are joined into the groups label\n",
               position: (1357, 1),
              },
             ],
            },
           ],
          },
         ),
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "refresh_interval",
             position: (1360, 5),
            },
           ],
          },
          FunctionApplication {
           function: Variable {
            identifier: "mkDefOpt",
            position: (1360, 24),
           },
           arguments: [
            PropertyAccess {
             expression: Variable {
              identifier: "types",
              position: (1360, 33),
             },
             attribute_path: AttributePath {
              attributes: [
               Raw {
                content: "str",
                position: (1360, 39),
               },
              ],
             },
             default: None,
            },
            String {
             parts: [
              Raw {
               content: "60s",
               position: (1360, 44),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "Refresh interval to re-read the managed targets list.\n",
               position: (1361, 1),
              },
             ],
            },
           ],
          },
         ),
        ],
        recursive: false,
        position: (1330, 48),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1365, 3),
       },
       Raw {
        content: "static_config",
        position: (1365, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (1365, 29),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (1365, 35),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (1366, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "targets",
                position: (1367, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1367, 17),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1368, 9),
                    },
                   ],
                  },
                  FunctionApplication {
                   function: PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (1368, 16),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "listOf",
                       position: (1368, 22),
                      },
                     ],
                    },
                    default: None,
                   },
                   arguments: [
                    PropertyAccess {
                     expression: Variable {
                      identifier: "types",
                      position: (1368, 29),
                     },
                     attribute_path: AttributePath {
                      attributes: [
                       Raw {
                        content: "str",
                        position: (1368, 35),
                       },
                      ],
                     },
                     default: None,
                    },
                   ],
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1369, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "The targets specified by the target group.\n",
                     position: (1370, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1367, 26),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "labels",
                position: (1373, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1373, 16),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1374, 9),
                    },
                   ],
                  },
                  FunctionApplication {
                   function: PropertyAccess {
                    expression: Variable {
                     identifier: "types",
                     position: (1374, 16),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "attrsOf",
                       position: (1374, 22),
                      },
                     ],
                    },
                    default: None,
                   },
                   arguments: [
                    PropertyAccess {
                     expression: Variable {
                      identifier: "types",
                      position: (1374, 30),
                     },
                     attribute_path: AttributePath {
                      attributes: [
                       Raw {
                        content: "str",
                        position: (1374, 36),
                       },
                      ],
                     },
                     default: None,
                    },
                   ],
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "default",
                     position: (1375, 9),
                    },
                   ],
                  },
                  Map {
                   bindings: [],
                   recursive: false,
                   position: (1375, 19),
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1376, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "Labels assigned to all metrics scraped from the targets.\n",
                     position: (1377, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1373, 25),
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (1366, 15),
          },
         ),
        ],
        recursive: false,
        position: (1365, 45),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1387, 3),
       },
       Raw {
        content: "relabel_config",
        position: (1387, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (1387, 30),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (1387, 36),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (1388, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "source_labels",
                position: (1389, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1389, 23),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1389, 30),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (1389, 36),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "types",
                   position: (1389, 43),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "str",
                     position: (1389, 49),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "The source labels select values from existing labels. Their content\nis concatenated using the configured separator and matched against\nthe configured regular expression.\n",
                  position: (1390, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "separator",
                position: (1395, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1395, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1395, 28),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1395, 34),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: ";",
                  position: (1395, 39),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Separator placed between concatenated source label values.\n",
                  position: (1396, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "target_label",
                position: (1399, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1399, 22),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1399, 28),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1399, 34),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Label to which the resulting value is written in a replace action.\nIt is mandatory for replace actions.\n",
                  position: (1400, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "regex",
                position: (1404, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1404, 15),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1404, 24),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1404, 30),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "(.*)",
                  position: (1404, 35),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Regular expression against which the extracted value is matched.\n",
                  position: (1405, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "modulus",
                position: (1408, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1408, 17),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1408, 23),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "int",
                   position: (1408, 29),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Modulus to take of the hash of the source label values.\n",
                  position: (1409, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "replacement",
                position: (1412, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1412, 21),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1412, 30),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1412, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "$1",
                  position: (1412, 41),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Replacement value against which a regex replace is performed if the\nregular expression matches.\n",
                  position: (1413, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "action",
                position: (1417, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkDefOpt",
               position: (1418, 9),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1418, 19),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "enum",
                    position: (1418, 25),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 List {
                  elements: [
                   String {
                    parts: [
                     Raw {
                      content: "replace",
                      position: (1418, 33),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "keep",
                      position: (1418, 43),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "drop",
                      position: (1418, 50),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "hashmod",
                      position: (1418, 57),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "labelmap",
                      position: (1418, 67),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "labeldrop",
                      position: (1418, 78),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "labelkeep",
                      position: (1418, 90),
                     },
                    ],
                   },
                  ],
                  position: (1418, 30),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "replace",
                  position: (1418, 105),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Action to perform based on regex matching.\n",
                  position: (1419, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (1388, 15),
          },
         ),
        ],
        recursive: false,
        position: (1387, 46),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1428, 3),
       },
       Raw {
        content: "remote_write",
        position: (1428, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (1428, 28),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (1428, 34),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (1429, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "url",
                position: (1430, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1430, 13),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1431, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (1431, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (1431, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1432, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "ServerName extension to indicate the name of the server.\nhttp://tools.ietf.org/html/rfc4366#section-3.1\n",
                     position: (1433, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1430, 22),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "remote_timeout",
                position: (1437, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1437, 24),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1437, 30),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1437, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Timeout for requests to the remote write endpoint.\n",
                  position: (1438, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "write_relabel_configs",
                position: (1440, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1440, 31),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1440, 38),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "listOf",
                    position: (1440, 44),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "promTypes",
                   position: (1440, 51),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "relabel_config",
                     position: (1440, 61),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "List of remote write relabel configurations.\n",
                  position: (1441, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "name",
                position: (1443, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1443, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1443, 20),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1443, 26),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Name of the remote write config, which if specified must be unique among remote write configs.\nThe name will be used in metrics and logging in place of a generated value to help users distinguish between\nremote write configs.\n",
                  position: (1444, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "basic_auth",
                position: (1448, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1448, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (1448, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "basic_auth",
                   position: (1448, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the `Authorization` header on every remote write request with the\nconfigured username and password.\npassword and password_file are mutually exclusive.\n",
                  position: (1449, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "bearer_token",
                position: (1453, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1453, 22),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1453, 28),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1453, 34),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the `Authorization` header on every remote write request with\nthe configured bearer token. It is mutually exclusive with `bearer_token_file`.\n",
                  position: (1454, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "bearer_token_file",
                position: (1457, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1457, 27),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1457, 33),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1457, 39),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the `Authorization` header on every remote write request with the bearer token\nread from the configured file. It is mutually exclusive with `bearer_token`.\n",
                  position: (1458, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tls_config",
                position: (1461, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1461, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (1461, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "tls_config",
                   position: (1461, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Configures the remote write request's TLS settings.\n",
                  position: (1462, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "proxy_url",
                position: (1464, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1464, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1464, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1464, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Optional Proxy URL.",
                  position: (1464, 36),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "queue_config",
                position: (1465, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1465, 22),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1466, 10),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "submodule",
                    position: (1466, 16),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 Map {
                  bindings: [
                   KeyValue(
                    AttributePath {
                     attributes: [
                      Raw {
                       content: "options",
                       position: (1467, 11),
                      },
                     ],
                    },
                    Map {
                     bindings: [
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "capacity",
                          position: (1468, 13),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "mkOpt",
                         position: (1468, 24),
                        },
                        arguments: [
                         PropertyAccess {
                          expression: Variable {
                           identifier: "types",
                           position: (1468, 30),
                          },
                          attribute_path: AttributePath {
                           attributes: [
                            Raw {
                             content: "int",
                             position: (1468, 36),
                            },
                           ],
                          },
                          default: None,
                         },
                         String {
                          parts: [
                           Raw {
                            content: "Number of samples to buffer per shard before we block reading of more\nsamples from the WAL. It is recommended to have enough capacity in each\nshard to buffer several requests to keep throughput up while processing\noccasional slow remote requests.\n",
                            position: (1469, 1),
                           },
                          ],
                         },
                        ],
                       },
                      ),
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "max_shards",
                          position: (1474, 13),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "mkOpt",
                         position: (1474, 26),
                        },
                        arguments: [
                         PropertyAccess {
                          expression: Variable {
                           identifier: "types",
                           position: (1474, 32),
                          },
                          attribute_path: AttributePath {
                           attributes: [
                            Raw {
                             content: "int",
                             position: (1474, 38),
                            },
                           ],
                          },
                          default: None,
                         },
                         String {
                          parts: [
                           Raw {
                            content: "Maximum number of shards, i.e. amount of concurrency.\n",
                            position: (1475, 1),
                           },
                          ],
                         },
                        ],
                       },
                      ),
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "min_shards",
                          position: (1477, 13),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "mkOpt",
                         position: (1477, 26),
                        },
                        arguments: [
                         PropertyAccess {
                          expression: Variable {
                           identifier: "types",
                           position: (1477, 32),
                          },
                          attribute_path: AttributePath {
                           attributes: [
                            Raw {
                             content: "int",
                             position: (1477, 38),
                            },
                           ],
                          },
                          default: None,
                         },
                         String {
                          parts: [
                           Raw {
                            content: "Minimum number of shards, i.e. amount of concurrency.\n",
                            position: (1478, 1),
                           },
                          ],
                         },
                        ],
                       },
                      ),
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "max_samples_per_send",
                          position: (1480, 13),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "mkOpt",
                         position: (1480, 36),
                        },
                        arguments: [
                         PropertyAccess {
                          expression: Variable {
                           identifier: "types",
                           position: (1480, 42),
                          },
                          attribute_path: AttributePath {
                           attributes: [
                            Raw {
                             content: "int",
                             position: (1480, 48),
                            },
                           ],
                          },
                          default: None,
                         },
                         String {
                          parts: [
                           Raw {
                            content: "Maximum number of samples per send.\n",
                            position: (1481, 1),
                           },
                          ],
                         },
                        ],
                       },
                      ),
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "batch_send_deadline",
                          position: (1483, 13),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "mkOpt",
                         position: (1483, 35),
                        },
                        arguments: [
                         PropertyAccess {
                          expression: Variable {
                           identifier: "types",
                           position: (1483, 41),
                          },
                          attribute_path: AttributePath {
                           attributes: [
                            Raw {
                             content: "str",
                             position: (1483, 47),
                            },
                           ],
                          },
                          default: None,
                         },
                         String {
                          parts: [
                           Raw {
                            content: "Maximum time a sample will wait in buffer.\n",
                            position: (1484, 1),
                           },
                          ],
                         },
                        ],
                       },
                      ),
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "min_backoff",
                          position: (1486, 13),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "mkOpt",
                         position: (1486, 27),
                        },
                        arguments: [
                         PropertyAccess {
                          expression: Variable {
                           identifier: "types",
                           position: (1486, 33),
                          },
                          attribute_path: AttributePath {
                           attributes: [
                            Raw {
                             content: "str",
                             position: (1486, 39),
                            },
                           ],
                          },
                          default: None,
                         },
                         String {
                          parts: [
                           Raw {
                            content: "Initial retry delay. Gets doubled for every retry.\n",
                            position: (1487, 1),
                           },
                          ],
                         },
                        ],
                       },
                      ),
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "max_backoff",
                          position: (1489, 13),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "mkOpt",
                         position: (1489, 27),
                        },
                        arguments: [
                         PropertyAccess {
                          expression: Variable {
                           identifier: "types",
                           position: (1489, 33),
                          },
                          attribute_path: AttributePath {
                           attributes: [
                            Raw {
                             content: "str",
                             position: (1489, 39),
                            },
                           ],
                          },
                          default: None,
                         },
                         String {
                          parts: [
                           Raw {
                            content: "Maximum retry delay.\n",
                            position: (1490, 1),
                           },
                          ],
                         },
                        ],
                       },
                      ),
                     ],
                     recursive: false,
                     position: (1467, 21),
                    },
                   ),
                  ],
                  recursive: false,
                  position: (1466, 26),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Configures the queue used to write to remote storage.\n",
                  position: (1494, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "metadata_config",
                position: (1496, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1496, 25),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1497, 10),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "submodule",
                    position: (1497, 16),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 Map {
                  bindings: [
                   KeyValue(
                    AttributePath {
                     attributes: [
                      Raw {
                       content: "options",
                       position: (1498, 11),
                      },
                     ],
                    },
                    Map {
                     bindings: [
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "send",
                          position: (1499, 13),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "mkOpt",
                         position: (1499, 20),
                        },
                        arguments: [
                         PropertyAccess {
                          expression: Variable {
                           identifier: "types",
                           position: (1499, 26),
                          },
                          attribute_path: AttributePath {
                           attributes: [
                            Raw {
                             content: "bool",
                             position: (1499, 32),
                            },
                           ],
                          },
                          default: None,
                         },
                         String {
                          parts: [
                           Raw {
                            content: "Whether metric metadata is sent to remote storage or not.\n",
                            position: (1500, 1),
                           },
                          ],
                         },
                        ],
                       },
                      ),
                      KeyValue(
                       AttributePath {
                        attributes: [
                         Raw {
                          content: "send_interval",
                          position: (1502, 13),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "mkOpt",
                         position: (1502, 29),
                        },
                        arguments: [
                         PropertyAccess {
                          expression: Variable {
                           identifier: "types",
                           position: (1502, 35),
                          },
                          attribute_path: AttributePath {
                           attributes: [
                            Raw {
                             content: "str",
                             position: (1502, 41),
                            },
                           ],
                          },
                          default: None,
                         },
                         String {
                          parts: [
                           Raw {
                            content: "How frequently metric metadata is sent to remote storage.\n",
                            position: (1503, 1),
                           },
                          ],
                         },
                        ],
                       },
                      ),
                     ],
                     recursive: false,
                     position: (1498, 21),
                    },
                   ),
                  ],
                  recursive: false,
                  position: (1497, 26),
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "Configures the sending of series metadata to remote storage.\nMetadata configuration is subject to change at any point\nor be removed in future releases.\n",
                  position: (1507, 1),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (1429, 15),
          },
         ),
        ],
        recursive: false,
        position: (1428, 44),
       },
      ],
     },
    ),
    KeyValue(
     AttributePath {
      attributes: [
       Raw {
        content: "promTypes",
        position: (1514, 3),
       },
       Raw {
        content: "remote_read",
        position: (1514, 13),
       },
      ],
     },
     FunctionApplication {
      function: PropertyAccess {
       expression: Variable {
        identifier: "types",
        position: (1514, 27),
       },
       attribute_path: AttributePath {
        attributes: [
         Raw {
          content: "submodule",
          position: (1514, 33),
         },
        ],
       },
       default: None,
      },
      arguments: [
       Map {
        bindings: [
         KeyValue(
          AttributePath {
           attributes: [
            Raw {
             content: "options",
             position: (1515, 5),
            },
           ],
          },
          Map {
           bindings: [
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "url",
                position: (1516, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOption",
               position: (1516, 13),
              },
              arguments: [
               Map {
                bindings: [
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "type",
                     position: (1517, 9),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "types",
                    position: (1517, 16),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "str",
                      position: (1517, 22),
                     },
                    ],
                   },
                   default: None,
                  },
                 ),
                 KeyValue(
                  AttributePath {
                   attributes: [
                    Raw {
                     content: "description",
                     position: (1518, 9),
                    },
                   ],
                  },
                  String {
                   parts: [
                    Raw {
                     content: "ServerName extension to indicate the name of the server.\nhttp://tools.ietf.org/html/rfc4366#section-3.1\n",
                     position: (1519, 1),
                    },
                   ],
                  },
                 ),
                ],
                recursive: false,
                position: (1516, 22),
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "name",
                position: (1523, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1523, 14),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1523, 20),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1523, 26),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Name of the remote read config, which if specified must be unique among remote read configs.\nThe name will be used in metrics and logging in place of a generated value to help users distinguish between\nremote read configs.\n",
                  position: (1524, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "required_matchers",
                position: (1528, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1528, 27),
              },
              arguments: [
               FunctionApplication {
                function: PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1528, 34),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "attrsOf",
                    position: (1528, 40),
                   },
                  ],
                 },
                 default: None,
                },
                arguments: [
                 PropertyAccess {
                  expression: Variable {
                   identifier: "types",
                   position: (1528, 48),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "str",
                     position: (1528, 54),
                    },
                   ],
                  },
                  default: None,
                 },
                ],
               },
               String {
                parts: [
                 Raw {
                  content: "An optional list of equality matchers which have to be\npresent in a selector to query the remote read endpoint.\n",
                  position: (1529, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "remote_timeout",
                position: (1532, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1532, 24),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1532, 30),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1532, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Timeout for requests to the remote read endpoint.\n",
                  position: (1533, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "read_recent",
                position: (1535, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1535, 21),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1535, 27),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "bool",
                   position: (1535, 33),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Whether reads should be made for queries for time ranges that\nthe local storage should have complete data for.\n",
                  position: (1536, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "basic_auth",
                position: (1539, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1539, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (1539, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "basic_auth",
                   position: (1539, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the `Authorization` header on every remote read request with the\nconfigured username and password.\npassword and password_file are mutually exclusive.\n",
                  position: (1540, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "bearer_token",
                position: (1544, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1544, 22),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1544, 28),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1544, 34),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the `Authorization` header on every remote read request with\nthe configured bearer token. It is mutually exclusive with `bearer_token_file`.\n",
                  position: (1545, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "bearer_token_file",
                position: (1548, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1548, 27),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1548, 33),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1548, 39),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Sets the `Authorization` header on every remote read request with the bearer token\nread from the configured file. It is mutually exclusive with `bearer_token`.\n",
                  position: (1549, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "tls_config",
                position: (1552, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1552, 20),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "promTypes",
                 position: (1552, 26),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "tls_config",
                   position: (1552, 36),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Configures the remote read request's TLS settings.\n",
                  position: (1553, 1),
                 },
                ],
               },
              ],
             },
            ),
            KeyValue(
             AttributePath {
              attributes: [
               Raw {
                content: "proxy_url",
                position: (1555, 7),
               },
              ],
             },
             FunctionApplication {
              function: Variable {
               identifier: "mkOpt",
               position: (1555, 19),
              },
              arguments: [
               PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1555, 25),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "str",
                   position: (1555, 31),
                  },
                 ],
                },
                default: None,
               },
               String {
                parts: [
                 Raw {
                  content: "Optional Proxy URL.",
                  position: (1555, 36),
                 },
                ],
               },
              ],
             },
            ),
           ],
           recursive: false,
           position: (1515, 15),
          },
         ),
        ],
        recursive: false,
        position: (1514, 43),
       },
      ],
     },
    ),
   ],
   target: Map {
    bindings: [
     KeyValue(
      AttributePath {
       attributes: [
        Raw {
         content: "imports",
         position: (1562, 3),
        },
       ],
      },
      List {
       elements: [
        FunctionApplication {
         function: Variable {
          identifier: "mkRenamedOptionModule",
          position: (1563, 6),
         },
         arguments: [
          List {
           elements: [
            String {
             parts: [
              Raw {
               content: "services",
               position: (1563, 31),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "prometheus2",
               position: (1563, 42),
              },
             ],
            },
           ],
           position: (1563, 28),
          },
          List {
           elements: [
            String {
             parts: [
              Raw {
               content: "services",
               position: (1563, 60),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "prometheus",
               position: (1563, 71),
              },
             ],
            },
           ],
           position: (1563, 57),
          },
         ],
        },
        FunctionApplication {
         function: Variable {
          identifier: "mkRemovedOptionModule",
          position: (1564, 6),
         },
         arguments: [
          List {
           elements: [
            String {
             parts: [
              Raw {
               content: "services",
               position: (1564, 31),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "prometheus",
               position: (1564, 42),
              },
             ],
            },
            String {
             parts: [
              Raw {
               content: "environmentFile",
               position: (1564, 55),
              },
             ],
            },
           ],
           position: (1564, 28),
          },
          String {
           parts: [
            Raw {
             content: "It has been removed since it was causing issues (https://github.com/NixOS/nixpkgs/issues/126083) and Prometheus now has native support for secret files, i.e. `basic_auth.password_file` and `authorization.credentials_file`.",
             position: (1565, 8),
            },
           ],
          },
         ],
        },
       ],
       position: (1562, 13),
      },
     ),
     KeyValue(
      AttributePath {
       attributes: [
        Raw {
         content: "options",
         position: (1568, 3),
        },
        Raw {
         content: "services",
         position: (1568, 11),
        },
        Raw {
         content: "prometheus",
         position: (1568, 20),
        },
       ],
      },
      Map {
       bindings: [
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "enable",
            position: (1570, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1570, 14),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1571, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (1571, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "bool",
                  position: (1571, 20),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1572, 7),
                },
               ],
              },
              Variable {
               identifier: "false",
               position: (1572, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1573, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Enable the Prometheus monitoring daemon.\n",
                 position: (1574, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1570, 23),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "package",
            position: (1578, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1578, 15),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1579, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (1579, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "package",
                  position: (1579, 20),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1580, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "pkgs",
                position: (1580, 17),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "prometheus",
                  position: (1580, 22),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "defaultText",
                 position: (1581, 7),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "literalExpression",
                position: (1581, 21),
               },
               arguments: [
                String {
                 parts: [
                  Raw {
                   content: "pkgs.prometheus",
                   position: (1581, 40),
                  },
                 ],
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1582, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "The prometheus package that should be used.\n",
                 position: (1583, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1578, 24),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "port",
            position: (1587, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1587, 12),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1588, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (1588, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "port",
                  position: (1588, 20),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1589, 7),
                },
               ],
              },
              Int {
               value: 9090,
               position: (1589, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1590, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Port to listen on.\n",
                 position: (1591, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1587, 21),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "listenAddress",
            position: (1595, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1595, 21),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1596, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (1596, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "str",
                  position: (1596, 20),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1597, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "0.0.0.0",
                 position: (1597, 18),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1598, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Address to listen on for the web interface, API, and telemetry.\n",
                 position: (1599, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1595, 30),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "stateDir",
            position: (1603, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1603, 16),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1604, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (1604, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "str",
                  position: (1604, 20),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1605, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "prometheus2",
                 position: (1605, 18),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1606, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Directory below <literal>/var/lib</literal> to store Prometheus metrics data.\nThis directory will be created automatically using systemd's StateDirectory mechanism.\n",
                 position: (1607, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1603, 25),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "extraFlags",
            position: (1612, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1612, 18),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1613, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1613, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "listOf",
                   position: (1613, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1613, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1613, 33),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1614, 7),
                },
               ],
              },
              List {
               elements: [],
               position: (1614, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1615, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Extra commandline options when launching Prometheus.\n",
                 position: (1616, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1612, 27),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "enableReload",
            position: (1620, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1620, 20),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1621, 7),
                },
               ],
              },
              Variable {
               identifier: "false",
               position: (1621, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1622, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (1622, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "bool",
                  position: (1622, 20),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1623, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Reload prometheus when configuration file changes (instead of restart).\n\nThe following property holds: switching to a configuration\n(<literal>switch-to-configuration</literal>) that changes the prometheus\nconfiguration only finishes successully when prometheus has finished\nloading the new configuration.\n",
                 position: (1624, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1620, 29),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "configText",
            position: (1633, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1633, 18),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1634, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1634, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "nullOr",
                   position: (1634, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1634, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "lines",
                    position: (1634, 33),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1635, 7),
                },
               ],
              },
              Variable {
               identifier: "null",
               position: (1635, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1636, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "If non-null, this option defines the text that is written to\nprometheus.yml. If null, the contents of prometheus.yml is generated\nfrom the structured config options.\n",
                 position: (1637, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1633, 27),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "globalConfig",
            position: (1643, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1643, 20),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1644, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "promTypes",
                position: (1644, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "globalConfig",
                  position: (1644, 24),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1645, 7),
                },
               ],
              },
              Map {
               bindings: [],
               recursive: false,
               position: (1645, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1646, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Parameters that are valid in all  configuration contexts. They\nalso serve as defaults for other configuration sections\n",
                 position: (1647, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1643, 29),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "remoteRead",
            position: (1652, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1652, 18),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1653, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1653, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "listOf",
                   position: (1653, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "promTypes",
                  position: (1653, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "remote_read",
                    position: (1653, 37),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1654, 7),
                },
               ],
              },
              List {
               elements: [],
               position: (1654, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1655, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Parameters of the endpoints to query from.\nSee <link xlink:href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_read\">the official documentation</link> for more information.\n",
                 position: (1656, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1652, 27),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "remoteWrite",
            position: (1661, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1661, 19),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1662, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1662, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "listOf",
                   position: (1662, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "promTypes",
                  position: (1662, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "remote_write",
                    position: (1662, 37),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1663, 7),
                },
               ],
              },
              List {
               elements: [],
               position: (1663, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1664, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Parameters of the endpoints to send samples to.\nSee <link xlink:href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write\">the official documentation</link> for more information.\n",
                 position: (1665, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1661, 28),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "rules",
            position: (1670, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1670, 13),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1671, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1671, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "listOf",
                   position: (1671, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1671, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1671, 33),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1672, 7),
                },
               ],
              },
              List {
               elements: [],
               position: (1672, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1673, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Alerting and/or Recording rules to evaluate at runtime.\n",
                 position: (1674, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1670, 22),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "ruleFiles",
            position: (1678, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1678, 17),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1679, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1679, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "listOf",
                   position: (1679, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1679, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "path",
                    position: (1679, 33),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1680, 7),
                },
               ],
              },
              List {
               elements: [],
               position: (1680, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1681, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Any additional rules files to include in this configuration.\n",
                 position: (1682, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1678, 26),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "scrapeConfigs",
            position: (1686, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1686, 21),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1687, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1687, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "listOf",
                   position: (1687, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "promTypes",
                  position: (1687, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "scrape_config",
                    position: (1687, 37),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1688, 7),
                },
               ],
              },
              List {
               elements: [],
               position: (1688, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1689, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "A list of scrape configurations.\n",
                 position: (1690, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1686, 30),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "alertmanagers",
            position: (1694, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1694, 21),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1695, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1695, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "listOf",
                   position: (1695, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1695, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "attrs",
                    position: (1695, 33),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "example",
                 position: (1696, 7),
                },
               ],
              },
              FunctionApplication {
               function: Variable {
                identifier: "literalExpression",
                position: (1696, 17),
               },
               arguments: [
                String {
                 parts: [
                  Raw {
                   content: "[ {\n  scheme = \"https\";\n  path_prefix = \"/alertmanager\";\n  static_configs = [ {\n    targets = [\n      \"prometheus.domain.tld\"\n    ];\n  } ];\n} ]\n",
                   position: (1697, 1),
                  },
                 ],
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1707, 7),
                },
               ],
              },
              List {
               elements: [],
               position: (1707, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1708, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "A list of alertmanagers to send alerts to.\nSee <link xlink:href=\"https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config\">the official documentation</link> for more information.\n",
                 position: (1709, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1694, 30),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "alertmanagerNotificationQueueCapacity",
            position: (1714, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1714, 45),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1715, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (1715, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "int",
                  position: (1715, 20),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1716, 7),
                },
               ],
              },
              Int {
               value: 10000,
               position: (1716, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1717, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "The capacity of the queue for pending alert manager notifications.\n",
                 position: (1718, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1714, 54),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "alertmanagerTimeout",
            position: (1722, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1722, 27),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1723, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (1723, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "int",
                  position: (1723, 20),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1724, 7),
                },
               ],
              },
              Int {
               value: 10,
               position: (1724, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1725, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Alert manager HTTP API timeout (in seconds).\n",
                 position: (1726, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1722, 36),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "webExternalUrl",
            position: (1730, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1730, 22),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1731, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1731, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "nullOr",
                   position: (1731, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1731, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1731, 33),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1732, 7),
                },
               ],
              },
              Variable {
               identifier: "null",
               position: (1732, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "example",
                 position: (1733, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "https://example.com/",
                 position: (1733, 18),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1734, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "The URL under which Prometheus is externally reachable (for example,\nif Prometheus is served via a reverse proxy).\n",
                 position: (1735, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1730, 31),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "checkConfig",
            position: (1740, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1740, 19),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1741, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "types",
                position: (1741, 14),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "bool",
                  position: (1741, 20),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1742, 7),
                },
               ],
              },
              Variable {
               identifier: "true",
               position: (1742, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1743, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Check configuration with <literal>promtool\ncheck</literal>. The call to <literal>promtool</literal> is\nsubject to sandboxing by Nix. When credentials are stored in\nexternal files (<literal>password_file</literal>,\n<literal>bearer_token_file</literal>, etc), they will not be\nvisible to <literal>promtool</literal> and it will report\nerrors, despite a correct configuration.\n",
                 position: (1744, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1740, 28),
           },
          ],
         },
        ),
        KeyValue(
         AttributePath {
          attributes: [
           Raw {
            content: "retentionTime",
            position: (1754, 5),
           },
          ],
         },
         FunctionApplication {
          function: Variable {
           identifier: "mkOption",
           position: (1754, 21),
          },
          arguments: [
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "type",
                 position: (1755, 7),
                },
               ],
              },
              FunctionApplication {
               function: PropertyAccess {
                expression: Variable {
                 identifier: "types",
                 position: (1755, 14),
                },
                attribute_path: AttributePath {
                 attributes: [
                  Raw {
                   content: "nullOr",
                   position: (1755, 20),
                  },
                 ],
                },
                default: None,
               },
               arguments: [
                PropertyAccess {
                 expression: Variable {
                  identifier: "types",
                  position: (1755, 27),
                 },
                 attribute_path: AttributePath {
                  attributes: [
                   Raw {
                    content: "str",
                    position: (1755, 33),
                   },
                  ],
                 },
                 default: None,
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "default",
                 position: (1756, 7),
                },
               ],
              },
              Variable {
               identifier: "null",
               position: (1756, 17),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "example",
                 position: (1757, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "15d",
                 position: (1757, 18),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1758, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "How long to retain samples in storage.\n",
                 position: (1759, 1),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1754, 30),
           },
          ],
         },
        ),
       ],
       recursive: false,
       position: (1568, 33),
      },
     ),
     KeyValue(
      AttributePath {
       attributes: [
        Raw {
         content: "config",
         position: (1764, 3),
        },
       ],
      },
      FunctionApplication {
       function: Variable {
        identifier: "mkIf",
        position: (1764, 12),
       },
       arguments: [
        PropertyAccess {
         expression: Variable {
          identifier: "cfg",
          position: (1764, 17),
         },
         attribute_path: AttributePath {
          attributes: [
           Raw {
            content: "enable",
            position: (1764, 21),
           },
          ],
         },
         default: None,
        },
        Map {
         bindings: [
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "assertions",
              position: (1765, 5),
             },
            ],
           },
           List {
            elements: [
             LetIn {
              bindings: [
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "legacy",
                   position: (1770, 11),
                  },
                 ],
                },
                FunctionApplication {
                 function: PropertyAccess {
                  expression: Variable {
                   identifier: "builtins",
                   position: (1770, 20),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "match",
                     position: (1770, 29),
                    },
                   ],
                  },
                  default: None,
                 },
                 arguments: [
                  String {
                   parts: [
                    Raw {
                     content: "(.*\\..*|.*]):([[:digit:]]+)",
                     position: (1770, 36),
                    },
                   ],
                  },
                  PropertyAccess {
                   expression: Variable {
                    identifier: "cfg",
                    position: (1770, 66),
                   },
                   attribute_path: AttributePath {
                    attributes: [
                     Raw {
                      content: "listenAddress",
                      position: (1770, 70),
                     },
                    ],
                   },
                   default: None,
                  },
                 ],
                },
               ),
              ],
              target: Map {
               bindings: [
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "assertion",
                    position: (1773, 11),
                   },
                  ],
                 },
                 BinaryOperation {
                  operator: EqualTo,
                  operands: [
                   Variable {
                    identifier: "legacy",
                    position: (1773, 23),
                   },
                   Variable {
                    identifier: "null",
                    position: (1773, 33),
                   },
                  ],
                  position: (1773, 30),
                 },
                ),
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "message",
                    position: (1774, 11),
                   },
                  ],
                 },
                 String {
                  parts: [
                   Raw {
                    content: "Do not specify the port for Prometheus to listen on in the\nlistenAddress option; use the port option instead:\n  services.prometheus.listenAddress = ",
                    position: (1775, 1),
                   },
                   Expression {
                    expression: FunctionApplication {
                     function: PropertyAccess {
                      expression: Variable {
                       identifier: "builtins",
                       position: (1777, 53),
                      },
                      attribute_path: AttributePath {
                       attributes: [
                        Raw {
                         content: "elemAt",
                         position: (1777, 62),
                        },
                       ],
                      },
                      default: None,
                     },
                     arguments: [
                      Variable {
                       identifier: "legacy",
                       position: (1777, 69),
                      },
                      Int {
                       value: 0,
                       position: (1777, 76),
                      },
                     ],
                    },
                   },
                   Raw {
                    content: ";\n  services.prometheus.port = ",
                    position: (1777, 78),
                   },
                   Expression {
                    expression: FunctionApplication {
                     function: PropertyAccess {
                      expression: Variable {
                       identifier: "builtins",
                       position: (1778, 44),
                      },
                      attribute_path: AttributePath {
                       attributes: [
                        Raw {
                         content: "elemAt",
                         position: (1778, 53),
                        },
                       ],
                      },
                      default: None,
                     },
                     arguments: [
                      Variable {
                       identifier: "legacy",
                       position: (1778, 60),
                      },
                      Int {
                       value: 1,
                       position: (1778, 67),
                      },
                     ],
                    },
                   },
                   Raw {
                    content: ";\n",
                    position: (1778, 69),
                   },
                  ],
                 },
                ),
               ],
               recursive: false,
               position: (1772, 9),
              },
              position: (1767, 9),
             },
            ],
            position: (1765, 18),
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "users",
              position: (1784, 5),
             },
             Raw {
              content: "groups",
              position: (1784, 11),
             },
             Raw {
              content: "prometheus",
              position: (1784, 18),
             },
             Raw {
              content: "gid",
              position: (1784, 29),
             },
            ],
           },
           PropertyAccess {
            expression: Variable {
             identifier: "config",
             position: (1784, 35),
            },
            attribute_path: AttributePath {
             attributes: [
              Raw {
               content: "ids",
               position: (1784, 42),
              },
              Raw {
               content: "gids",
               position: (1784, 46),
              },
              Raw {
               content: "prometheus",
               position: (1784, 51),
              },
             ],
            },
            default: None,
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "users",
              position: (1785, 5),
             },
             Raw {
              content: "users",
              position: (1785, 11),
             },
             Raw {
              content: "prometheus",
              position: (1785, 17),
             },
            ],
           },
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "description",
                 position: (1786, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "Prometheus daemon user",
                 position: (1786, 22),
                },
               ],
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "uid",
                 position: (1787, 7),
                },
               ],
              },
              PropertyAccess {
               expression: Variable {
                identifier: "config",
                position: (1787, 13),
               },
               attribute_path: AttributePath {
                attributes: [
                 Raw {
                  content: "ids",
                  position: (1787, 20),
                 },
                 Raw {
                  content: "uids",
                  position: (1787, 24),
                 },
                 Raw {
                  content: "prometheus",
                  position: (1787, 29),
                 },
                ],
               },
               default: None,
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "group",
                 position: (1788, 7),
                },
               ],
              },
              String {
               parts: [
                Raw {
                 content: "prometheus",
                 position: (1788, 16),
                },
               ],
              },
             ),
            ],
            recursive: false,
            position: (1785, 30),
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "environment",
              position: (1790, 5),
             },
             Raw {
              content: "etc",
              position: (1790, 17),
             },
             Expression {
              expression: String {
               parts: [
                Raw {
                 content: "prometheus/prometheus.yaml",
                 position: (1790, 22),
                },
               ],
              },
             },
            ],
           },
           FunctionApplication {
            function: Variable {
             identifier: "mkIf",
             position: (1790, 52),
            },
            arguments: [
             PropertyAccess {
              expression: Variable {
               identifier: "cfg",
               position: (1790, 57),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "enableReload",
                 position: (1790, 61),
                },
               ],
              },
              default: None,
             },
             Map {
              bindings: [
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "source",
                   position: (1791, 7),
                  },
                 ],
                },
                Variable {
                 identifier: "prometheusYml",
                 position: (1791, 16),
                },
               ),
              ],
              recursive: false,
              position: (1790, 74),
             },
            ],
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "systemd",
              position: (1793, 5),
             },
             Raw {
              content: "services",
              position: (1793, 13),
             },
             Raw {
              content: "prometheus",
              position: (1793, 22),
             },
            ],
           },
           Map {
            bindings: [
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "wantedBy",
                 position: (1794, 7),
                },
               ],
              },
              List {
               elements: [
                String {
                 parts: [
                  Raw {
                   content: "multi-user.target",
                   position: (1794, 21),
                  },
                 ],
                },
               ],
               position: (1794, 18),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "after",
                 position: (1795, 7),
                },
               ],
              },
              List {
               elements: [
                String {
                 parts: [
                  Raw {
                   content: "network.target",
                   position: (1795, 18),
                  },
                 ],
                },
               ],
               position: (1795, 15),
              },
             ),
             KeyValue(
              AttributePath {
               attributes: [
                Raw {
                 content: "serviceConfig",
                 position: (1796, 7),
                },
               ],
              },
              Map {
               bindings: [
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "ExecStart",
                    position: (1797, 9),
                   },
                  ],
                 },
                 BinaryOperation {
                  operator: Addition,
                  operands: [
                   String {
                    parts: [
                     Expression {
                      expression: PropertyAccess {
                       expression: Variable {
                        identifier: "cfg",
                        position: (1797, 24),
                       },
                       attribute_path: AttributePath {
                        attributes: [
                         Raw {
                          content: "package",
                          position: (1797, 28),
                         },
                        ],
                       },
                       default: None,
                      },
                     },
                     Raw {
                      content: "/bin/prometheus",
                      position: (1797, 36),
                     },
                    ],
                   },
                   FunctionApplication {
                    function: Variable {
                     identifier: "optionalString",
                     position: (1798, 11),
                    },
                    arguments: [
                     BinaryOperation {
                      operator: NotEqualTo,
                      operands: [
                       FunctionApplication {
                        function: Variable {
                         identifier: "length",
                         position: (1798, 27),
                        },
                        arguments: [
                         Variable {
                          identifier: "cmdlineArgs",
                          position: (1798, 34),
                         },
                        ],
                       },
                       Int {
                        value: 0,
                        position: (1798, 49),
                       },
                      ],
                      position: (1798, 46),
                     },
                     BinaryOperation {
                      operator: Addition,
                      operands: [
                       String {
                        parts: [
                         Raw {
                          content: " \\\n  ",
                          position: (1798, 54),
                         },
                        ],
                       },
                       FunctionApplication {
                        function: Variable {
                         identifier: "concatStringsSep",
                         position: (1799, 13),
                        },
                        arguments: [
                         String {
                          parts: [
                           Raw {
                            content: " \\\n  ",
                            position: (1799, 31),
                           },
                          ],
                         },
                         Variable {
                          identifier: "cmdlineArgs",
                          position: (1799, 40),
                         },
                        ],
                       },
                      ],
                      position: (1798, 63),
                     },
                    ],
                   },
                  ],
                  position: (1797, 53),
                 },
                ),
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "ExecReload",
                    position: (1800, 9),
                   },
                  ],
                 },
                 FunctionApplication {
                  function: Variable {
                   identifier: "mkIf",
                   position: (1800, 22),
                  },
                  arguments: [
                   PropertyAccess {
                    expression: Variable {
                     identifier: "cfg",
                     position: (1800, 27),
                    },
                    attribute_path: AttributePath {
                     attributes: [
                      Raw {
                       content: "enableReload",
                       position: (1800, 31),
                      },
                     ],
                    },
                    default: None,
                   },
                   String {
                    parts: [
                     Raw {
                      content: "+",
                      position: (1800, 45),
                     },
                     Expression {
                      expression: Variable {
                       identifier: "reload",
                       position: (1800, 48),
                      },
                     },
                     Raw {
                      content: "/bin/reload-prometheus",
                      position: (1800, 55),
                     },
                    ],
                   },
                  ],
                 },
                ),
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "User",
                    position: (1801, 9),
                   },
                  ],
                 },
                 String {
                  parts: [
                   Raw {
                    content: "prometheus",
                    position: (1801, 17),
                   },
                  ],
                 },
                ),
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "Restart",
                    position: (1802, 9),
                   },
                  ],
                 },
                 String {
                  parts: [
                   Raw {
                    content: "always",
                    position: (1802, 20),
                   },
                  ],
                 },
                ),
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "RuntimeDirectory",
                    position: (1803, 9),
                   },
                  ],
                 },
                 String {
                  parts: [
                   Raw {
                    content: "prometheus",
                    position: (1803, 29),
                   },
                  ],
                 },
                ),
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "RuntimeDirectoryMode",
                    position: (1804, 9),
                   },
                  ],
                 },
                 String {
                  parts: [
                   Raw {
                    content: "0700",
                    position: (1804, 33),
                   },
                  ],
                 },
                ),
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "WorkingDirectory",
                    position: (1805, 9),
                   },
                  ],
                 },
                 Variable {
                  identifier: "workingDir",
                  position: (1805, 28),
                 },
                ),
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "StateDirectory",
                    position: (1806, 9),
                   },
                  ],
                 },
                 PropertyAccess {
                  expression: Variable {
                   identifier: "cfg",
                   position: (1806, 26),
                  },
                  attribute_path: AttributePath {
                   attributes: [
                    Raw {
                     content: "stateDir",
                     position: (1806, 30),
                    },
                   ],
                  },
                  default: None,
                 },
                ),
                KeyValue(
                 AttributePath {
                  attributes: [
                   Raw {
                    content: "StateDirectoryMode",
                    position: (1807, 9),
                   },
                  ],
                 },
                 String {
                  parts: [
                   Raw {
                    content: "0700",
                    position: (1807, 31),
                   },
                  ],
                 },
                ),
               ],
               recursive: false,
               position: (1796, 23),
              },
             ),
            ],
            recursive: false,
            position: (1793, 35),
           },
          ),
          KeyValue(
           AttributePath {
            attributes: [
             Raw {
              content: "systemd",
              position: (1821, 5),
             },
             Raw {
              content: "services",
              position: (1821, 13),
             },
             Raw {
              content: "prometheus-config-reload",
              position: (1821, 22),
             },
            ],
           },
           FunctionApplication {
            function: Variable {
             identifier: "mkIf",
             position: (1821, 49),
            },
            arguments: [
             PropertyAccess {
              expression: Variable {
               identifier: "cfg",
               position: (1821, 54),
              },
              attribute_path: AttributePath {
               attributes: [
                Raw {
                 content: "enableReload",
                 position: (1821, 58),
                },
               ],
              },
              default: None,
             },
             Map {
              bindings: [
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "wantedBy",
                   position: (1822, 7),
                  },
                 ],
                },
                List {
                 elements: [
                  String {
                   parts: [
                    Raw {
                     content: "prometheus.service",
                     position: (1822, 21),
                    },
                   ],
                  },
                 ],
                 position: (1822, 18),
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "after",
                   position: (1823, 7),
                  },
                 ],
                },
                List {
                 elements: [
                  String {
                   parts: [
                    Raw {
                     content: "prometheus.service",
                     position: (1823, 18),
                    },
                   ],
                  },
                 ],
                 position: (1823, 15),
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "reloadIfChanged",
                   position: (1824, 7),
                  },
                 ],
                },
                Variable {
                 identifier: "true",
                 position: (1824, 25),
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "restartTriggers",
                   position: (1825, 7),
                  },
                 ],
                },
                List {
                 elements: [
                  Variable {
                   identifier: "prometheusYml",
                   position: (1825, 27),
                  },
                 ],
                 position: (1825, 25),
                },
               ),
               KeyValue(
                AttributePath {
                 attributes: [
                  Raw {
                   content: "serviceConfig",
                   position: (1826, 7),
                  },
                 ],
                },
                Map {
                 bindings: [
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "Type",
                      position: (1827, 9),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Raw {
                      content: "oneshot",
                      position: (1827, 17),
                     },
                    ],
                   },
                  ),
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "RemainAfterExit",
                      position: (1828, 9),
                     },
                    ],
                   },
                   Variable {
                    identifier: "true",
                    position: (1828, 27),
                   },
                  ),
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "TimeoutSec",
                      position: (1829, 9),
                     },
                    ],
                   },
                   Int {
                    value: 60,
                    position: (1829, 22),
                   },
                  ),
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "ExecStart",
                      position: (1830, 9),
                     },
                    ],
                   },
                   String {
                    parts: [
                     Expression {
                      expression: PropertyAccess {
                       expression: Variable {
                        identifier: "pkgs",
                        position: (1830, 24),
                       },
                       attribute_path: AttributePath {
                        attributes: [
                         Raw {
                          content: "logger",
                          position: (1830, 29),
                         },
                        ],
                       },
                       default: None,
                      },
                     },
                     Raw {
                      content: "/bin/logger 'prometheus-config-reload will only reload prometheus when reloaded itself.'",
                      position: (1830, 36),
                     },
                    ],
                   },
                  ),
                  KeyValue(
                   AttributePath {
                    attributes: [
                     Raw {
                      content: "ExecReload",
                      position: (1831, 9),
                     },
                    ],
                   },
                   List {
                    elements: [
                     String {
                      parts: [
                       Expression {
                        expression: Variable {
                         identifier: "triggerReload",
                         position: (1831, 27),
                        },
                       },
                       Raw {
                        content: "/bin/trigger-reload-prometheus",
                        position: (1831, 41),
                       },
                      ],
                     },
                    ],
                    position: (1831, 22),
                   },
                  ),
                 ],
                 recursive: false,
                 position: (1826, 23),
                },
               ),
              ],
              recursive: false,
              position: (1821, 71),
             },
            ],
           },
          ),
         ],
         recursive: false,
         position: (1764, 28),
        },
       ],
      },
     ),
    ],
    recursive: false,
    position: (1560, 1),
   },
   position: (5, 1),
  },
  position: (3, 1),
 },
 position: (1, 1),
}