{
  "name": "TOML",
  "scopeName": "source.toml",
  "patterns": [
    {
      "include": "#comments"
    },
    {
      "include": "#groups"
    },
    {
      "include": "#key_pair"
    },
    {
      "include": "#invalid"
    }
  ],
  "repository": {
    "comments": {
      "begin": "(^[ \\t]+)?(?=#)",
      "end": "(?!\\G)",
      "patterns": [
        {
          "name": "comment.line.number-sign.toml",
          "begin": "#",
          "end": "\\n",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.comment.toml"
            }
          }
        }
      ],
      "beginCaptures": {
        "1": {
          "name": "punctuation.whitespace.comment.leading.toml"
        }
      }
    },
    "groups": {
      "patterns": [
        {
          "name": "meta.group.toml",
          "match": "^\\s*(\\[)([^\\[\\]]*)(\\])",
          "captures": {
            "1": {
              "name": "punctuation.definition.section.begin.toml"
            },
            "2": {
              "patterns": [
                {
                  "name": "entity.name.section.toml",
                  "match": "[^\\s.]+"
                }
              ]
            },
            "3": {
              "name": "punctuation.definition.section.begin.toml"
            }
          }
        },
        {
          "name": "meta.group.double.toml",
          "match": "^\\s*(\\[\\[)([^\\[\\]]*)(\\]\\])",
          "captures": {
            "1": {
              "name": "punctuation.definition.section.begin.toml"
            },
            "2": {
              "patterns": [
                {
                  "name": "entity.name.section.toml",
                  "match": "[^\\s.]+"
                }
              ]
            },
            "3": {
              "name": "punctuation.definition.section.begin.toml"
            }
          }
        }
      ]
    },
    "invalid": {
      "name": "invalid.illegal.not-allowed-here.toml",
      "match": "\\S+(\\s*(?=\\S))?"
    },
    "key_pair": {
      "patterns": [
        {
          "begin": "([A-Za-z0-9_-]+)\\s*(=)\\s*",
          "end": "(?\u003c=\\S)(?\u003c!=)|$",
          "patterns": [
            {
              "include": "#primatives"
            }
          ],
          "captures": {
            "1": {
              "name": "variable.other.key.toml"
            },
            "2": {
              "name": "punctuation.separator.key-value.toml"
            }
          }
        },
        {
          "begin": "((\")(.*)(\"))\\s*(=)\\s*",
          "end": "(?\u003c=\\S)(?\u003c!=)|$",
          "patterns": [
            {
              "include": "#primatives"
            }
          ],
          "captures": {
            "1": {
              "name": "variable.other.key.toml"
            },
            "2": {
              "name": "punctuation.definition.variable.begin.toml"
            },
            "3": {
              "patterns": [
                {
                  "name": "constant.character.escape.toml",
                  "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})"
                },
                {
                  "name": "invalid.illegal.escape.toml",
                  "match": "\\\\[^btnfr\"\\\\]"
                },
                {
                  "name": "invalid.illegal.not-allowed-here.toml",
                  "match": "\""
                }
              ]
            },
            "4": {
              "name": "punctuation.definition.variable.end.toml"
            },
            "5": {
              "name": "punctuation.separator.key-value.toml"
            }
          }
        },
        {
          "begin": "((')([^']*)('))\\s*(=)\\s*",
          "end": "(?\u003c=\\S)(?\u003c!=)|$",
          "patterns": [
            {
              "include": "#primatives"
            }
          ],
          "captures": {
            "1": {
              "name": "variable.other.key.toml"
            },
            "2": {
              "name": "punctuation.definition.variable.begin.toml"
            },
            "4": {
              "name": "punctuation.definition.variable.end.toml"
            },
            "5": {
              "name": "punctuation.separator.key-value.toml"
            }
          }
        }
      ]
    },
    "primatives": {
      "patterns": [
        {
          "name": "string.quoted.triple.double.toml",
          "begin": "\\G\"\"\"",
          "end": "\"\"\"",
          "patterns": [
            {
              "name": "constant.character.escape.toml",
              "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})"
            },
            {
              "name": "invalid.illegal.escape.toml",
              "match": "\\\\[^btnfr\"\\\\\\n]"
            }
          ],
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.toml"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.toml"
            }
          }
        },
        {
          "name": "string.quoted.double.toml",
          "begin": "\\G\"",
          "end": "\"",
          "patterns": [
            {
              "name": "constant.character.escape.toml",
              "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})"
            },
            {
              "name": "invalid.illegal.escape.toml",
              "match": "\\\\[^btnfr\"\\\\]"
            }
          ],
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.toml"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.toml"
            }
          }
        },
        {
          "name": "string.quoted.triple.single.toml",
          "begin": "\\G'''",
          "end": "'''",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.toml"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.toml"
            }
          }
        },
        {
          "name": "string.quoted.single.toml",
          "begin": "\\G'",
          "end": "'",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.toml"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.toml"
            }
          }
        },
        {
          "name": "constant.other.date.toml",
          "match": "\\G(?x)\n\t\t\t\t\t\t[0-9]{4}\n\t\t\t\t\t\t-\n\t\t\t\t\t\t(0[1-9]|1[012])\n\t\t\t\t\t\t-\n\t\t\t\t\t\t(?!00|3[2-9])[0-3][0-9]\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t[Tt]\n\t\t\t\t\t\t\t(?!2[5-9])[0-2][0-9]\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t[0-5][0-9]\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t(?!6[1-9])[0-6][0-9]\n\t\t\t\t\t\t\t(\\.[0-9]+)?\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tZ\n\t\t\t\t\t\t\t  | [+-](?!2[5-9])[0-2][0-9]:[0-5][0-9]\n\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t)?\n\t\t\t\t\t"
        },
        {
          "name": "constant.language.boolean.toml",
          "match": "\\G(true|false)"
        },
        {
          "name": "constant.numeric.toml",
          "match": "\\G([+-]?(0|([1-9](([0-9]|_[0-9])+)?)))(\\.([0-9](([0-9]|_[0-9])+)?))?([eE]([+-]?(0|([1-9](([0-9]|_[0-9])+)?))))?"
        },
        {
          "name": "meta.array.toml",
          "begin": "\\G\\[",
          "end": "\\]",
          "patterns": [
            {
              "begin": "(?=[\"'']|[+-]?[0-9]|true|false|\\[|\\{)",
              "end": ",|(?=])",
              "patterns": [
                {
                  "include": "#primatives"
                },
                {
                  "include": "#comments"
                },
                {
                  "include": "#invalid"
                }
              ],
              "endCaptures": {
                "0": {
                  "name": "punctuation.separator.array.toml"
                }
              }
            },
            {
              "include": "#comments"
            },
            {
              "include": "#invalid"
            }
          ],
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.array.begin.toml"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.array.end.toml"
            }
          }
        },
        {
          "name": "meta.inline-table.toml",
          "begin": "\\G\\{",
          "end": "\\}",
          "patterns": [
            {
              "begin": "(?=\\S)",
              "end": ",|(?=})",
              "patterns": [
                {
                  "include": "#key_pair"
                }
              ],
              "endCaptures": {
                "0": {
                  "name": "punctuation.separator.inline-table.toml"
                }
              }
            },
            {
              "include": "#comments"
            }
          ],
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.inline-table.begin.toml"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.inline-table.end.toml"
            }
          }
        }
      ]
    }
  }
}