{
  "name": "svelte",
  "scopeName": "source.svelte",
  "fileTypes": ["svelte"],
  "uuid": "7582b62f-51d9-4a84-8c8d-fc189530faf6",
  "injections": {
    "L:(meta.script.svelte | meta.style.svelte) (meta.lang.js | meta.lang.javascript) - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.js",
          "patterns": [
            {
              "include": "source.js"
            }
          ]
        }
      ]
    },
    "L:(meta.script.svelte | meta.style.svelte) (meta.lang.ts | meta.lang.typescript) - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.ts",
          "patterns": [
            {
              "include": "source.ts"
            }
          ]
        }
      ]
    },
    "L:(meta.script.svelte | meta.style.svelte) meta.lang.coffee - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.coffee",
          "patterns": [
            {
              "include": "source.coffee"
            }
          ]
        }
      ]
    },
    "L:meta.script.svelte - meta.lang - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.js",
          "patterns": [
            {
              "include": "source.js"
            }
          ]
        }
      ]
    },
    "L:meta.style.svelte meta.lang.stylus - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.stylus",
          "patterns": [
            {
              "include": "source.stylus"
            }
          ]
        }
      ]
    },
    "L:meta.style.svelte meta.lang.sass - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.sass",
          "patterns": [
            {
              "include": "source.sass"
            }
          ]
        }
      ]
    },
    "L:meta.style.svelte meta.lang.css - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.css",
          "patterns": [
            {
              "include": "source.css"
            }
          ]
        }
      ]
    },
    "L:meta.style.svelte meta.lang.scss - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.css.scss",
          "patterns": [
            {
              "include": "source.css.scss"
            }
          ]
        }
      ]
    },
    "L:meta.style.svelte meta.lang.less - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.css.less",
          "patterns": [
            {
              "include": "source.css.less"
            }
          ]
        }
      ]
    },
    "L:meta.style.svelte meta.lang.postcss - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.css.postcss",
          "patterns": [
            {
              "include": "source.css.postcss"
            }
          ]
        }
      ]
    },
    "L:meta.style.svelte - meta.lang - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "source.css",
          "patterns": [
            {
              "include": "source.css"
            }
          ]
        }
      ]
    },
    "L:meta.template.svelte meta.lang.pug - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)(?!</)",
          "end": "(?=</)",
          "name": "meta.embedded.block.svelte",
          "contentName": "text.pug",
          "patterns": [
            {
              "include": "text.pug"
            }
          ]
        }
      ]
    },
    "L:meta.template.svelte - meta.lang - (meta source)": {
      "patterns": [
        {
          "begin": "(?<=>)\\s",
          "end": "(?=</template)",
          "patterns": [
            {
              "include": "#scope"
            }
          ]
        }
      ]
    },
    "L:(source.ts, source.js, source.coffee)": {
      "patterns": [
        {
          "match": "(?<![_$./'\"[:alnum:]])\\$(?=[_[:alpha:]][_$[:alnum:]]*)",
          "name": "punctuation.definition.variable.svelte"
        },
        {
          "match": "(?<![_$./'\"[:alnum:]])(\\$\\$)(?=props|restProps|slots)",
          "name": "punctuation.definition.variable.svelte"
        }
      ]
    }
  },
  "patterns": [
    {
      "include": "#scope"
    }
  ],
  "repository": {
    "scope": {
      "patterns": [
        {
          "include": "#comments"
        },
        {
          "include": "#special-tags"
        },
        {
          "include": "#tags"
        },
        {
          "include": "#interpolation"
        },
        {
          "begin": "(?<=>|})",
          "end": "(?=<|{)",
          "name": "text.svelte"
        }
      ]
    },
    "comments": {
      "begin": "<!--",
      "end": "-->",
      "captures": {
        "0": {
          "name": "punctuation.definition.comment.svelte"
        }
      },
      "name": "comment.block.svelte",
      "patterns": [
        {
          "begin": "(@)(component)",
          "beginCaptures": {
            "1": {
              "name": "punctuation.definition.keyword.svelte"
            },
            "2": {
              "name": "storage.type.class.component.svelte keyword.declaration.class.component.svelte"
            }
          },
          "end": "(?=-->)",
          "contentName": "comment.block.documentation.svelte",
          "patterns": [
            {
              "match": ".*?(?=-->)",
              "captures": {
                "0": {
                  "patterns": [
                    {
                      "include": "text.html.markdown"
                    }
                  ]
                }
              }
            },
            {
              "include": "text.html.markdown"
            }
          ]
        },
        {
          "match": "\\G-?>|<!--(?!>)|<!-(?=-->)|--!>",
          "name": "invalid.illegal.characters-not-allowed-here.svelte"
        }
      ]
    },
    "destructuring": {
      "patterns": [
        {
          "begin": "(?={)",
          "end": "(?<=})",
          "name": "meta.embedded.expression.svelte source.ts",
          "patterns": [
            {
              "include": "source.ts#object-binding-pattern"
            }
          ]
        },
        {
          "begin": "(?=\\[)",
          "end": "(?<=\\])",
          "name": "meta.embedded.expression.svelte source.ts",
          "patterns": [
            {
              "include": "source.ts#array-binding-pattern"
            }
          ]
        }
      ]
    },
    "destructuring-const": {
      "patterns": [
        {
          "begin": "(?={)",
          "end": "(?<=})",
          "name": "meta.embedded.expression.svelte source.ts",
          "patterns": [
            {
              "include": "source.ts#object-binding-pattern-const"
            }
          ]
        },
        {
          "begin": "(?=\\[)",
          "end": "(?<=\\])",
          "name": "meta.embedded.expression.svelte source.ts",
          "patterns": [
            {
              "include": "source.ts#array-binding-pattern-const"
            }
          ]
        }
      ]
    },
    "interpolation": {
      "patterns": [
        {
          "begin": "\\{",
          "end": "\\}",
          "beginCaptures": {
            "0": {
              "name": "punctuation.section.embedded.begin.svelte"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.section.embedded.end.svelte"
            }
          },
          "contentName": "meta.embedded.expression.svelte source.ts",
          "patterns": [
            {
              "begin": "\\G\\s*(?={)",
              "end": "(?<=})",
              "patterns": [
                {
                  "include": "source.ts#object-literal"
                }
              ]
            },
            {
              "include": "source.ts"
            }
          ]
        }
      ]
    },
    "special-tags": {
      "patterns": [
        {
          "include": "#special-tags-void"
        },
        {
          "include": "#special-tags-block-begin"
        },
        {
          "include": "#special-tags-block-end"
        }
      ]
    },
    "special-tags-keywords": {
      "match": "([#@/:])(else\\s+if|[a-z]*)",
      "captures": {
        "1": {
          "name": "punctuation.definition.keyword.svelte"
        },
        "2": {
          "patterns": [
            {
              "match": "if|else\\s+if|else",
              "name": "keyword.control.conditional.svelte"
            },
            {
              "match": "each|key",
              "name": "keyword.control.svelte"
            },
            {
              "match": "await|then|catch",
              "name": "keyword.control.flow.svelte"
            },
            {
              "match": "html",
              "name": "keyword.other.svelte"
            },
            {
              "match": "debug",
              "name": "keyword.other.debugger.svelte"
            },
            {
              "match": "const",
              "name": "storage.type.svelte"
            }
          ]
        }
      }
    },
    "special-tags-modes": {
      "patterns": [
        {
          "begin": "(?<=(if|key|then|catch|html).*?)\\G",
          "end": "(?=})",
          "name": "meta.embedded.expression.svelte source.ts",
          "patterns": [
            {
              "include": "source.ts"
            }
          ]
        },
        {
          "begin": "(?<=const.*?)\\G",
          "end": "(?=})",
          "patterns": [
            {
              "include": "#destructuring-const"
            },
            {
              "begin": "\\G\\s*([_$[:alpha:]][_$[:alnum:]]+)\\s*",
              "end": "(?=\\=)",
              "beginCaptures": {
                "1": {
                  "name": "variable.other.constant.svelte"
                }
              }
            },
            {
              "begin": "(?=\\=)",
              "name": "meta.embedded.expression.svelte source.ts",
              "end": "(?=})",
              "patterns": [
                {
                  "include": "source.ts"
                }
              ]
            }
          ]
        },
        {
          "begin": "(?<=each.*?)\\G",
          "end": "(?=})",
          "patterns": [
            {
              "begin": "\\G\\s*?(?=\\S)",
              "end": "(?=(?:^\\s*|\\s+)(as))",
              "contentName": "meta.embedded.expression.svelte source.ts",
              "patterns": [
                {
                  "include": "source.ts"
                }
              ]
            },
            {
              "begin": "(as)",
              "beginCaptures": {
                "1": {
                  "name": "keyword.control.as.svelte"
                }
              },
              "end": "(?=})",
              "patterns": [
                {
                  "include": "#destructuring"
                },
                {
                  "begin": "\\(",
                  "end": "\\)|(?=})",
                  "captures": {
                    "0": {
                      "name": "meta.brace.round.svelte"
                    }
                  },
                  "contentName": "meta.embedded.expression.svelte source.ts",
                  "patterns": [
                    {
                      "include": "source.ts"
                    }
                  ]
                },
                {
                  "match": "(\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*)",
                  "captures": {
                    "1": {
                      "name": "meta.embedded.expression.svelte source.ts",
                      "patterns": [
                        {
                          "include": "source.ts"
                        }
                      ]
                    }
                  }
                },
                {
                  "match": ",",
                  "name": "punctuation.separator.svelte"
                }
              ]
            }
          ]
        },
        {
          "begin": "(?<=await.*?)\\G",
          "end": "(?=})",
          "patterns": [
            {
              "begin": "\\G\\s*?(?=\\S)",
              "end": "\\s+(then)|(?=})",
              "endCaptures": {
                "1": {
                  "name": "keyword.control.flow.svelte"
                }
              },
              "contentName": "meta.embedded.expression.svelte source.ts",
              "patterns": [
                {
                  "include": "source.ts"
                }
              ]
            },
            {
              "begin": "(?<=then\\b)",
              "end": "(?=})",
              "contentName": "meta.embedded.expression.svelte source.ts",
              "patterns": [
                {
                  "include": "source.ts"
                }
              ]
            }
          ]
        },
        {
          "begin": "(?<=debug.*?)\\G",
          "end": "(?=})",
          "patterns": [
            {
              "match": "[_$[:alpha:]][_$[:alnum:]]*",
              "captures": {
                "0": {
                  "name": "meta.embedded.expression.svelte source.ts",
                  "patterns": [
                    {
                      "include": "source.ts"
                    }
                  ]
                }
              }
            },
            {
              "match": ",",
              "name": "punctuation.separator.svelte"
            }
          ]
        }
      ]
    },
    "special-tags-void": {
      "begin": "({)\\s*((?:[@:])(else\\s+if|[a-z]*))",
      "beginCaptures": {
        "1": {
          "name": "punctuation.definition.block.begin.svelte"
        },
        "2": {
          "patterns": [
            {
              "include": "#special-tags-keywords"
            }
          ]
        }
      },
      "end": "\\}",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.block.end.svelte"
        }
      },
      "name": "meta.special.$3.svelte",
      "patterns": [
        {
          "include": "#special-tags-modes"
        }
      ]
    },
    "special-tags-block-begin": {
      "begin": "({)\\s*(#([a-z]*))",
      "end": "(})",
      "name": "meta.special.$3.svelte meta.special.start.svelte",
      "beginCaptures": {
        "1": {
          "name": "punctuation.definition.block.begin.svelte"
        },
        "2": {
          "patterns": [
            {
              "include": "#special-tags-keywords"
            }
          ]
        }
      },
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.block.end.svelte"
        }
      },
      "patterns": [
        {
          "include": "#special-tags-modes"
        }
      ]
    },
    "special-tags-block-end": {
      "begin": "({)\\s*(/([a-z]*))",
      "end": "(})",
      "name": "meta.special.$3.svelte meta.special.end.svelte",
      "beginCaptures": {
        "1": {
          "name": "punctuation.definition.block.begin.svelte"
        },
        "2": {
          "patterns": [
            {
              "include": "#special-tags-keywords"
            }
          ]
        }
      },
      "endCaptures": {
        "1": {
          "name": "punctuation.definition.block.end.svelte"
        }
      }
    },
    "attributes": {
      "patterns": [
        {
          "include": "#attributes-directives"
        },
        {
          "include": "#attributes-keyvalue"
        },
        {
          "include": "#attributes-interpolated"
        }
      ]
    },
    "attributes-interpolated": {
      "begin": "(?<!:|=)\\s*({)",
      "end": "(\\})",
      "captures": {
        "1": {
          "name": "entity.other.attribute-name.svelte"
        }
      },
      "contentName": "meta.embedded.expression.svelte source.ts",
      "patterns": [
        {
          "include": "source.ts"
        }
      ]
    },
    "attributes-keyvalue": {
      "begin": "((?:--)?[_$[:alpha:]][_\\-$[:alnum:]]*)",
      "beginCaptures": {
        "0": {
          "patterns": [
            {
              "match": "--.*",
              "name": "support.type.property-name.svelte"
            },
            {
              "match": ".*",
              "name": "entity.other.attribute-name.svelte"
            }
          ]
        }
      },
      "end": "(?=\\s*+[^=\\s])",
      "name": "meta.attribute.$1.svelte",
      "patterns": [
        {
          "begin": "=",
          "beginCaptures": {
            "0": {
              "name": "punctuation.separator.key-value.svelte"
            }
          },
          "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
          "patterns": [
            {
              "include": "#attributes-value"
            }
          ]
        }
      ]
    },
    "attributes-value": {
      "patterns": [
        {
          "include": "#interpolation"
        },
        {
          "match": "(?:(['\"])([0-9._]+[\\w%]{,4})(\\1))|(?:([0-9._]+[\\w%]{,4})(?=\\s|/?>))",
          "captures": {
            "1": {
              "name": "punctuation.definition.string.begin.svelte"
            },
            "2": {
              "name": "constant.numeric.decimal.svelte"
            },
            "3": {
              "name": "punctuation.definition.string.end.svelte"
            },
            "4": {
              "name": "constant.numeric.decimal.svelte"
            }
          }
        },
        {
          "match": "([^\\s\"'=<>`/]|/(?!>))+",
          "name": "string.unquoted.svelte",
          "patterns": [
            {
              "include": "#interpolation"
            }
          ]
        },
        {
          "begin": "(['\"])",
          "end": "\\1",
          "beginCaptures": {
            "0": {
              "name": "punctuation.definition.string.begin.svelte"
            }
          },
          "endCaptures": {
            "0": {
              "name": "punctuation.definition.string.end.svelte"
            }
          },
          "name": "string.quoted.svelte",
          "patterns": [
            {
              "include": "#interpolation"
            }
          ]
        }
      ]
    },
    "attributes-directives-keywords": {
      "patterns": [
        {
          "match": "on|use|bind",
          "name": "keyword.control.svelte"
        },
        {
          "match": "transition|in|out|animate",
          "name": "keyword.other.animation.svelte"
        },
        {
          "match": "let",
          "name": "storage.type.svelte"
        },
        {
          "match": "class|style",
          "name": "entity.other.attribute-name.svelte"
        }
      ]
    },
    "attributes-directives-types": {
      "patterns": [
        {
          "match": "(?<=(on):).*$",
          "name": "entity.name.type.svelte"
        },
        {
          "match": "(?<=(bind):).*$",
          "name": "variable.parameter.svelte"
        },
        {
          "match": "(?<=(use|transition|in|out|animate):).*$",
          "name": "variable.function.svelte"
        },
        {
          "match": "(?<=(let|class|style):).*$",
          "name": "variable.parameter.svelte"
        }
      ]
    },
    "attributes-directives-types-assigned": {
      "patterns": [
        {
          "match": "(?<=(bind):)this$",
          "name": "variable.language.svelte"
        },
        {
          "match": "(?<=(bind):).*$",
          "name": "entity.name.type.svelte"
        },
        {
          "match": "(?<=(class):).*$",
          "name": "entity.other.attribute-name.class.svelte"
        },
        {
          "match": "(?<=(style):).*$",
          "name": "support.type.property-name.svelte"
        },
        {
          "include": "#attributes-directives-types"
        }
      ]
    },
    "attributes-directives": {
      "begin": "(?<!<)(on|use|bind|transition|in|out|animate|let|class|style)(:)(?:((?:--)?[_$[:alpha:]][_\\-$[:alnum:]]*(?=\\s*=))|((?:--)?[_$[:alpha:]][_\\-$[:alnum:]]*))((\\|\\w+)*)",
      "beginCaptures": {
        "1": {
          "patterns": [
            {
              "include": "#attributes-directives-keywords"
            }
          ]
        },
        "2": {
          "name": "punctuation.definition.keyword.svelte"
        },
        "3": {
          "patterns": [
            {
              "include": "#attributes-directives-types-assigned"
            }
          ]
        },
        "4": {
          "patterns": [
            {
              "include": "#attributes-directives-types"
            }
          ]
        },
        "5": {
          "patterns": [
            {
              "match": "\\w+",
              "name": "support.function.svelte"
            },
            {
              "match": "\\|",
              "name": "punctuation.separator.svelte"
            }
          ]
        }
      },
      "end": "(?=\\s*+[^=\\s])",
      "name": "meta.directive.$1.svelte",
      "patterns": [
        {
          "begin": "=",
          "beginCaptures": {
            "0": {
              "name": "punctuation.separator.key-value.svelte"
            }
          },
          "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
          "patterns": [
            {
              "include": "#attributes-value"
            }
          ]
        }
      ]
    },
    "attributes-generics": {
      "begin": "(generics)(=)([\"'])",
      "beginCaptures": {
        "1": {
          "name": "entity.other.attribute-name.svelte"
        },
        "2": {
          "name": "punctuation.separator.key-value.svelte"
        },
        "3": {
          "name": "punctuation.definition.string.begin.svelte"
        }
      },
      "end": "(\\3)",
      "endCaptures": {
        "1": {
          "name": "punctuation.definition.string.end.svelte"
        }
      },
      "contentName": "meta.embedded.expression.svelte source.ts",
      "patterns": [
        {
          "include": "#type-parameters"
        }
      ]
    },
    "type-parameters": {
      "name": "meta.type.parameters.ts",
      "patterns": [
        {
          "include": "source.ts#comment"
        },
        {
          "name": "storage.modifier.ts",
          "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
        },
        {
          "include": "source.ts#type"
        },
        {
          "include": "source.ts#punctuation-comma"
        },
        {
          "name": "keyword.operator.assignment.ts",
          "match": "(=)(?!>)"
        }
      ]
    },
    "tags": {
      "patterns": [
        {
          "include": "#tags-lang"
        },
        {
          "include": "#tags-void"
        },
        {
          "include": "#tags-general-end"
        },
        {
          "include": "#tags-general-start"
        }
      ]
    },
    "tags-name": {
      "patterns": [
        {
          "match": "(svelte)(:)([a-z][\\w0-9:-]*)",
          "captures": {
            "1": {
              "name": "keyword.control.svelte"
            },
            "2": {
              "name": "punctuation.definition.keyword.svelte"
            },
            "3": {
              "name": "entity.name.tag.svelte"
            }
          }
        },
        {
          "match": "slot",
          "name": "keyword.control.svelte"
        },
        {
          "match": "[A-Z][a-zA-Z0-9_]*",
          "name": "support.class.component.svelte"
        },
        {
          "match": "[a-z][\\w0-9:]*-[\\w0-9:-]*",
          "name": "meta.tag.custom.svelte entity.name.tag.svelte"
        },
        {
          "match": "[a-z][\\w0-9:-]*",
          "name": "entity.name.tag.svelte"
        }
      ]
    },
    "tags-start-attributes": {
      "begin": "\\G",
      "end": "(?=/?>)",
      "name": "meta.tag.start.svelte",
      "patterns": [
        {
          "include": "#attributes"
        }
      ]
    },
    "tags-lang-start-attributes": {
      "begin": "\\G",
      "end": "(?=/>)|>",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.tag.end.svelte"
        }
      },
      "name": "meta.tag.start.svelte",
      "patterns": [
        {
          "include": "#attributes-generics"
        },
        {
          "include": "#attributes"
        }
      ]
    },
    "tags-start-node": {
      "match": "(<)([^/\\s>/]*)",
      "captures": {
        "1": {
          "name": "punctuation.definition.tag.begin.svelte"
        },
        "2": {
          "patterns": [
            {
              "include": "#tags-name"
            }
          ]
        }
      },
      "name": "meta.tag.start.svelte"
    },
    "tags-end-node": {
      "match": "(</)(.*?)\\s*(>)|(/>)",
      "captures": {
        "1": {
          "name": "meta.tag.end.svelte punctuation.definition.tag.begin.svelte"
        },
        "2": {
          "name": "meta.tag.end.svelte",
          "patterns": [
            {
              "include": "#tags-name"
            }
          ]
        },
        "3": {
          "name": "meta.tag.end.svelte punctuation.definition.tag.end.svelte"
        },
        "4": {
          "name": "meta.tag.start.svelte punctuation.definition.tag.end.svelte"
        }
      }
    },
    "tags-lang": {
      "begin": "<(script|style|template)",
      "end": "</\\1\\s*>|/>",
      "beginCaptures": {
        "0": {
          "patterns": [
            {
              "include": "#tags-start-node"
            }
          ]
        }
      },
      "endCaptures": {
        "0": {
          "patterns": [
            {
              "include": "#tags-end-node"
            }
          ]
        }
      },
      "name": "meta.$1.svelte",
      "patterns": [
        {
          "begin": "\\G(?=\\s*[^>]*?(type|lang)\\s*=\\s*(['\"]|)(?:text/)?(\\w+)\\2)",
          "end": "(?=</|/>)",
          "name": "meta.lang.$3.svelte",
          "patterns": [
            {
              "include": "#tags-lang-start-attributes"
            }
          ]
        },
        {
          "include": "#tags-lang-start-attributes"
        }
      ]
    },
    "tags-void": {
      "begin": "(<)(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)(?=\\s|/?>)",
      "beginCaptures": {
        "1": {
          "name": "punctuation.definition.tag.begin.svelte"
        },
        "2": {
          "name": "entity.name.tag.svelte"
        }
      },
      "end": "/?>",
      "endCaptures": {
        "0": {
          "name": "punctuation.definition.tag.begin.svelte"
        }
      },
      "name": "meta.tag.void.svelte",
      "patterns": [
        {
          "include": "#attributes"
        }
      ]
    },
    "tags-general-start": {
      "begin": "(<)([^/\\s>/]*)",
      "end": "(/?>)",
      "beginCaptures": {
        "0": {
          "patterns": [
            {
              "include": "#tags-start-node"
            }
          ]
        }
      },
      "endCaptures": {
        "1": {
          "name": "meta.tag.start.svelte punctuation.definition.tag.end.svelte"
        }
      },
      "name": "meta.scope.tag.$2.svelte",
      "patterns": [
        {
          "include": "#tags-start-attributes"
        }
      ]
    },
    "tags-general-end": {
      "begin": "(</)([^/\\s>]*)",
      "end": "(>)",
      "beginCaptures": {
        "1": {
          "name": "meta.tag.end.svelte punctuation.definition.tag.begin.svelte"
        },
        "2": {
          "name": "meta.tag.end.svelte",
          "patterns": [
            {
              "include": "#tags-name"
            }
          ]
        }
      },
      "endCaptures": {
        "1": {
          "name": "meta.tag.end.svelte punctuation.definition.tag.end.svelte"
        }
      },
      "name": "meta.scope.tag.$2.svelte"
    }
  }
}
