const lang = Object.freeze(JSON.parse("{\"injectionSelector\":\"L:text.html -comment\",\"name\":\"angular-expression\",\"patterns\":[{\"include\":\"#ngExpression\"}],\"repository\":{\"arrayLiteral\":{\"begin\":\"\\\\[\",\"beginCaptures\":{\"0\":{\"name\":\"meta.brace.square.ts\"}},\"end\":\"\\\\]\",\"endCaptures\":{\"0\":{\"name\":\"meta.brace.square.ts\"}},\"name\":\"meta.array.literal.ts\",\"patterns\":[{\"include\":\"#ngExpression\"},{\"include\":\"#punctuationComma\"}]},\"booleanLiteral\":{\"patterns\":[{\"match\":\"(?>=|>>>=|\\\\|=\",\"name\":\"keyword.operator.assignment.compound.bitwise.ts\"},{\"match\":\"<<|>>>|>>\",\"name\":\"keyword.operator.bitwise.shift.ts\"},{\"match\":\"===|!==|==|!=\",\"name\":\"keyword.operator.comparison.ts\"},{\"match\":\"<=|>=|<>|<|>\",\"name\":\"keyword.operator.relational.ts\"},{\"match\":\"\\\\!|&&|\\\\?\\\\?|\\\\|\\\\|\",\"name\":\"keyword.operator.logical.ts\"},{\"match\":\"\\\\&|~|\\\\^|\\\\|\",\"name\":\"keyword.operator.bitwise.ts\"},{\"match\":\"\\\\=\",\"name\":\"keyword.operator.assignment.ts\"},{\"match\":\"--\",\"name\":\"keyword.operator.decrement.ts\"},{\"match\":\"\\\\+\\\\+\",\"name\":\"keyword.operator.increment.ts\"},{\"match\":\"\\\\%|\\\\*|\\\\/|-|\\\\+\",\"name\":\"keyword.operator.arithmetic.ts\"},{\"captures\":{\"1\":{\"name\":\"keyword.operator.arithmetic.ts\"}},\"match\":\"(?<=[_$[:alnum:]])\\\\s*(\\\\/)(?![\\\\/*])\"},{\"include\":\"#typeofOperator\"}]},\"functionCall\":{\"begin\":\"(?=(\\\\??\\\\.\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(<([^<>]|\\\\<[^<>]+\\\\>)+>\\\\s*)?\\\\()\",\"end\":\"(?<=\\\\))(?!(\\\\??\\\\.\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(<([^<>]|\\\\<[^<>]+\\\\>)+>\\\\s*)?\\\\()\",\"patterns\":[{\"match\":\"\\\\?\",\"name\":\"punctuation.accessor.ts\"},{\"match\":\"\\\\.\",\"name\":\"punctuation.accessor.ts\"},{\"match\":\"([_$[:alpha:]][_$[:alnum:]]*)\",\"name\":\"entity.name.function.ts\"},{\"begin\":\"\\\\<\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.typeparameters.begin.ts\"}},\"end\":\"\\\\>\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.typeparameters.end.ts\"}},\"name\":\"meta.type.parameters.ts\",\"patterns\":[{\"include\":\"#type\"},{\"include\":\"#punctuationComma\"}]},{\"include\":\"#parenExpression\"}]},\"functionParameters\":{\"begin\":\"\\\\(\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.parameters.begin.ts\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.parameters.end.ts\"}},\"name\":\"meta.parameters.ts\",\"patterns\":[{\"include\":\"#decorator\"},{\"include\":\"#parameterName\"},{\"include\":\"#variableInitializer\"},{\"match\":\",\",\"name\":\"punctuation.separator.parameter.ts\"}]},\"identifiers\":{\"patterns\":[{\"match\":\"([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\\\.\\\\s*prototype\\\\b(?!\\\\$))\",\"name\":\"support.class.ts\"},{\"captures\":{\"1\":{\"name\":\"punctuation.accessor.ts\"},\"2\":{\"name\":\"constant.other.object.property.ts\"},\"3\":{\"name\":\"variable.other.object.property.ts\"}},\"match\":\"([?!]?\\\\.)\\\\s*(?:([[:upper:]][_$[:digit:][:upper:]]*)|([_$[:alpha:]][_$[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)\"},{\"captures\":{\"1\":{\"name\":\"punctuation.accessor.ts\"},\"2\":{\"name\":\"entity.name.function.ts\"}},\"match\":\"(?:([?!]?\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)|((<([^<>]|\\\\<[^<>]+\\\\>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))\"},{\"captures\":{\"1\":{\"name\":\"punctuation.accessor.ts\"},\"2\":{\"name\":\"constant.other.property.ts\"}},\"match\":\"([?!]?\\\\.)\\\\s*([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\"},{\"captures\":{\"1\":{\"name\":\"punctuation.accessor.ts\"},\"2\":{\"name\":\"variable.other.property.ts\"}},\"match\":\"([?!]?\\\\.)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\"},{\"captures\":{\"1\":{\"name\":\"constant.other.object.ts\"},\"2\":{\"name\":\"variable.other.object.ts\"}},\"match\":\"(?:([[:upper:]][_$[:digit:][:upper:]]*)|([_$[:alpha:]][_$[:alnum:]]*))(?=\\\\s*\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)\"},{\"match\":\"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\"name\":\"constant.character.other\"},{\"match\":\"[_$[:alpha:]][_$[:alnum:]]*\",\"name\":\"variable.other.readwrite.ts\"}]},\"literal\":{\"name\":\"literal.ts\",\"patterns\":[{\"include\":\"#numericLiteral\"},{\"include\":\"#booleanLiteral\"},{\"include\":\"#nullLiteral\"},{\"include\":\"#undefinedLiteral\"},{\"include\":\"#numericConstantLiteral\"},{\"include\":\"#arrayLiteral\"},{\"include\":\"#thisLiteral\"}]},\"ngExpression\":{\"name\":\"meta.expression.ng\",\"patterns\":[{\"include\":\"#string\"},{\"include\":\"#literal\"},{\"include\":\"#ternaryExpression\"},{\"include\":\"#expressionOperator\"},{\"include\":\"#functionCall\"},{\"include\":\"#identifiers\"},{\"include\":\"#parenExpression\"},{\"include\":\"#punctuationComma\"},{\"include\":\"#punctuationAccessor\"}]},\"nullLiteral\":{\"match\":\"(?)|((<([^<>]|\\\\<[^<>]+\\\\>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))|(:\\\\s*((<)|([(]\\\\s*(([)])|(\\\\.\\\\.\\\\.)|([_$[:alnum:]]+\\\\s*(([:,?=])|([)]\\\\s*=>))))))))\"},{\"captures\":{\"1\":{\"name\":\"storage.modifier.ts\"},\"2\":{\"name\":\"storage.modifier.ts\"},\"3\":{\"name\":\"keyword.operator.rest.ts\"},\"4\":{\"name\":\"variable.parameter.ts\"},\"5\":{\"name\":\"keyword.operator.optional.ts\"}},\"match\":\"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(public|private|protected)\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?])|(?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)\",\"name\":\"meta.type.annotation.ts\",\"patterns\":[{\"include\":\"#type\"}]},\"typeBuiltinLiterals\":{\"match\":\"(?)\\\\s*(?=\\\\()\",\"end\":\"(?<=\\\\))\",\"include\":\"#typeofOperator\",\"name\":\"meta.type.function.ts\",\"patterns\":[{\"include\":\"#functionParameters\"}]},{\"begin\":\"((?=[(]\\\\s*(([)])|(\\\\.\\\\.\\\\.)|([_$[:alnum:]]+\\\\s*(([:,?=])|([)]\\\\s*=>))))))\",\"end\":\"(?<=\\\\))\",\"name\":\"meta.type.function.ts\",\"patterns\":[{\"include\":\"#functionParameters\"}]}]},\"typeName\":{\"patterns\":[{\"captures\":{\"1\":{\"name\":\"entity.name.type.module.ts\"},\"2\":{\"name\":\"punctuation.accessor.ts\"}},\"match\":\"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*([?!]?\\\\.)\"},{\"match\":\"[_$[:alpha:]][_$[:alnum:]]*\",\"name\":\"entity.name.type.ts\"}]},\"typeObject\":{\"begin\":\"\\\\{\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.block.ts\"}},\"end\":\"\\\\}\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.block.ts\"}},\"name\":\"meta.object.type.ts\",\"patterns\":[{\"include\":\"#typeObjectMembers\"}]},\"typeObjectMembers\":{\"patterns\":[{\"include\":\"#typeAnnotation\"},{\"include\":\"#punctuationComma\"},{\"include\":\"#punctuationSemicolon\"}]},\"typeOperators\":{\"patterns\":[{\"include\":\"#typeofOperator\"},{\"match\":\"[&|]\",\"name\":\"keyword.operator.type.ts\"},{\"match\":\"(?