<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>fileTypes</key>
	<array>
		<string>ts</string>
	</array>
	<key>name</key>
	<string>TypeScript</string>
	<key>patterns</key>
	<array>
		<dict>
			<key>include</key>
			<string>#expression</string>
		</dict>
	</array>
	<key>repository</key>
	<dict>
		<key>access-modifier</key>
		<dict>
			<key>match</key>
			<string>\b(public|protected|private)\b</string>
			<key>name</key>
			<string>storage.modifier.ts</string>
		</dict>
		<key>arithmetic-operator</key>
		<dict>
			<key>match</key>
			<string>\*|/|\-\-|\-|\+\+|\+|%</string>
			<key>name</key>
			<string>keyword.operator.arithmetic.ts</string>
		</dict>
		<key>array-literal</key>
		<dict>
			<key>begin</key>
			<string>\[</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.square.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\]</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.square.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.array.literal.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
		<key>assignment-operator</key>
		<dict>
			<key>match</key>
			<string>&lt;&lt;=|&gt;&gt;=|&gt;&gt;&gt;=|\*=|(?&lt;!\()/=|%=|\+=|\-=|&amp;=|\^=</string>
			<key>name</key>
			<string>keyword.operator.assignment.ts</string>
		</dict>
		<key>await-modifier</key>
		<dict>
			<key>match</key>
			<string>await</string>
			<key>name</key>
			<string>storage.modifier.ts</string>
		</dict>
		<key>block</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.curly.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\}</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.curly.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.block.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#object-member</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
		<key>boolean-literal</key>
		<dict>
			<key>match</key>
			<string>\b(false|true)\b</string>
			<key>name</key>
			<string>constant.language.boolean.ts</string>
		</dict>
		<key>cast</key>
		<dict>
			<key>begin</key>
			<string>(?:(?&lt;=return|throw|yield|await|[=(,:&gt;]))\s*(&lt;)(?!&lt;?\=)</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>meta.brace.angle.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>&gt;</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.angle.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>cast.expr.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type</string>
				</dict>
			</array>
		</dict>
		<key>comment</key>
		<dict>
			<key>name</key>
			<string>comment.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment-block-doc</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment-block</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment-line</string>
				</dict>
			</array>
		</dict>
		<key>comment-block</key>
		<dict>
			<key>begin</key>
			<string>/\*</string>
			<key>end</key>
			<string>\*/</string>
			<key>name</key>
			<string>comment.block.ts</string>
		</dict>
		<key>comment-block-doc</key>
		<dict>
			<key>begin</key>
			<string>/\*\*(?!/)</string>
			<key>end</key>
			<string>\*/</string>
			<key>name</key>
			<string>comment.block.documentation.ts</string>
		</dict>
		<key>comment-line</key>
		<dict>
			<key>match</key>
			<string>(//).*$\n?</string>
			<key>name</key>
			<string>comment.line.ts</string>
		</dict>
		<key>control-statement</key>
		<dict>
			<key>match</key>
			<string>(?&lt;!\.)\b(break|catch|continue|debugger|declare|do|else|finally|for|if|return|switch|throw|try|while|with|super|case|default)\b</string>
			<key>name</key>
			<string>keyword.control.ts</string>
		</dict>
		<key>decl-block</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.curly.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\}</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.curly.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.decl.block.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
		<key>declaration</key>
		<dict>
			<key>name</key>
			<string>meta.declaration.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#function-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#object-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#enum-declaration</string>
				</dict>
			</array>
		</dict>
		<key>enum-declaration</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.type.ts</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>entity.name.class.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(?:\b(const)\s+)?\b(enum)\s+([a-zA-Z_$][\w$]*)</string>
			<key>name</key>
			<string>meta.enum.declaration.ts</string>
		</dict>
		<key>expression</key>
		<dict>
			<key>name</key>
			<string>meta.expression.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#for-in-simple</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#regex</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#template</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#literal</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#paren-expression</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#var-expr</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#cast</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#new-expr</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#block</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#expression-operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#relational-operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#arithmetic-operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#logic-operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#assignment-operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#storage-keyword</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function-call</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#switch-case</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#control-statement</string>
				</dict>
			</array>
		</dict>
		<key>expression-operator</key>
		<dict>
			<key>match</key>
			<string>=&gt;|\b(delete|export|import|in|instanceof|module|namespace|new|typeof|void)\b</string>
			<key>name</key>
			<string>keyword.operator.ts</string>
		</dict>
		<key>field-declaration</key>
		<dict>
			<key>begin</key>
			<string>(?&lt;!\()\s*((?:\b[a-zA-Z_$][\w$]*)|(?:\'[^']*\')|(?:\"[^"]*\"))\s*(\?\s*)?(?=(=|:))</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>variable.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=\}|;|,)|(?&lt;=\})</string>
			<key>name</key>
			<string>meta.field.declaration.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
		<key>for-in-simple</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.type.ts</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(?&lt;=\()\s*\b(var|let|const)\s+([a-zA-Z_$][\w$]*)\s+(in|of)\b</string>
			<key>name</key>
			<string>forin.expr.ts</string>
		</dict>
		<key>function-call</key>
		<dict>
			<key>name</key>
			<string>functioncall.expr.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#await-modifier</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#paren-expression</string>
				</dict>
			</array>
		</dict>
		<key>function-declaration</key>
		<dict>
			<key>begin</key>
			<string>\b(?:(export)\s+)?(?:(async)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>storage.type.function.ts</string>
				</dict>
				<key>4</key>
				<dict>
					<key>name</key>
					<string>entity.name.function.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=;|\})|(?&lt;=\})</string>
			<key>name</key>
			<string>meta.function.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function-type-parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#return-type</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function-overload-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#decl-block</string>
				</dict>
			</array>
		</dict>
		<key>function-overload-declaration</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.type.function.ts</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>entity.name.function.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>\b(?:(export)\s+)?(function\b)(?:\s+([a-zA-Z_$][\w$]*))?\s*</string>
			<key>name</key>
			<string>meta.function.overload.ts</string>
		</dict>
		<key>function-type-parameters</key>
		<dict>
			<key>begin</key>
			<string>\(</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.round.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\)</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.round.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.function.type.parameter.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#parameter-name</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-annotation</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#variable-initializer</string>
				</dict>
			</array>
		</dict>
		<key>indexer-declaration</key>
		<dict>
			<key>begin</key>
			<string>\[</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.square.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(\])\s*(\?\s*)?|$</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>meta.brace.square.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.indexer.declaration.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type-annotation</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#indexer-parameter</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
		<key>indexer-parameter</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>variable.parameter.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>([a-zA-Z_$][\w$]*)(?=\:)</string>
			<key>name</key>
			<string>meta.indexer.parameter.ts</string>
		</dict>
		<key>literal</key>
		<dict>
			<key>name</key>
			<string>literal.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#numeric-literal</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#boolean-literal</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#null-literal</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#undefined-literal</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#array-literal</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#this-literal</string>
				</dict>
			</array>
		</dict>
		<key>logic-operator</key>
		<dict>
			<key>match</key>
			<string>\!|&amp;|~|\||&amp;&amp;|\|\|</string>
			<key>name</key>
			<string>keyword.operator.arithmetic.ts</string>
		</dict>
		<key>method-declaration</key>
		<dict>
			<key>begin</key>
			<string>\b(?:(abstract)\s+)?\b(?:(public|private|protected)\s+)?\b(?:(async)\s+)?(?:(get|set)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\&lt;)</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>4</key>
				<dict>
					<key>name</key>
					<string>storage.type.property.ts</string>
				</dict>
				<key>5</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
				<key>6</key>
				<dict>
					<key>name</key>
					<string>entity.name.function.ts</string>
				</dict>
				<key>7</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=\}|;|,)|(?&lt;=\})</string>
			<key>name</key>
			<string>meta.method.declaration.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function-type-parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-annotation</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#method-overload-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#decl-block</string>
				</dict>
			</array>
		</dict>
		<key>method-overload-declaration</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>entity.name.function.ts</string>
				</dict>
				<key>4</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>\b(?:(public|private|protected)\s+)?(?:(new)|(?:([a-zA-Z_$][\.\w$]*)\s*(\??)))?\s*(?=\(|\&lt;)</string>
			<key>name</key>
			<string>meta.method.overload.declaration.ts</string>
		</dict>
		<key>new-expr</key>
		<dict>
			<key>begin</key>
			<string>\b(new)\b</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=[(;]|$)</string>
			<key>name</key>
			<string>new.expr.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
			</array>
		</dict>
		<key>null-literal</key>
		<dict>
			<key>match</key>
			<string>\b(null)\b</string>
			<key>name</key>
			<string>constant.language.null.ts</string>
		</dict>
		<key>numeric-literal</key>
		<dict>
			<key>match</key>
			<string>\b(?&lt;=[^$])((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?))\b</string>
			<key>name</key>
			<string>constant.numeric.ts</string>
		</dict>
		<key>object-body</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.curly.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\}</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.curly.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.object.body.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#field-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#method-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#indexer-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-annotation</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#variable-initializer</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#access-modifier</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#static-modifier</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#property-accessor</string>
				</dict>
			</array>
		</dict>
		<key>object-declaration</key>
		<dict>
			<key>begin</key>
			<string>\b(?:(export)\s+)?\b(?:(abstract)\s+)?\b(?&lt;!\.)(class|interface)\b</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>storage.type.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?&lt;=\})</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>brace.curly.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.declaration.object.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#object-heritage</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#object-name</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#object-body</string>
				</dict>
			</array>
		</dict>
		<key>object-heritage</key>
		<dict>
			<key>begin</key>
			<string>(?:\b(extends|implements))</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=\{)</string>
			<key>endCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>brace.curly.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.object.heritage.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#object-heritage-parent</string>
				</dict>
			</array>
		</dict>
		<key>object-heritage-parent</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.type.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(?:\s*([a-zA-Z_$][\w$]*))</string>
			<key>name</key>
			<string>meta.object.heritage.parent.ts</string>
		</dict>
		<key>object-member</key>
		<dict>
			<key>begin</key>
			<string>[a-zA-Z_$][\w$]*\s*:</string>
			<key>end</key>
			<string>(?=,|\})</string>
			<key>name</key>
			<string>meta.object.member.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
		<key>object-name</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>entity.name.class.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>[a-zA-Z_$][\w$]*</string>
			<key>name</key>
			<string>meta.object.name.ts</string>
		</dict>
		<key>parameter-name</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.modifier.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
				<key>3</key>
				<dict>
					<key>name</key>
					<string>variable.parameter.ts</string>
				</dict>
				<key>4</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>(?:\s*\b(public|private|protected)\b\s+)?(\.\.\.)?\s*([a-zA-Z_$][\w$]*)\s*(\??)</string>
			<key>name</key>
			<string>parameter.name.ts</string>
		</dict>
		<key>paren-expression</key>
		<dict>
			<key>begin</key>
			<string>\(</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.paren.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\)</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.paren.ts</string>
				</dict>
			</dict>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
		<key>property-accessor</key>
		<dict>
			<key>match</key>
			<string>\b(get|set)\b</string>
			<key>name</key>
			<string>storage.type.property.ts</string>
		</dict>
		<key>qstring-double</key>
		<dict>
			<key>begin</key>
			<string>"</string>
			<key>end</key>
			<string>"|(?=$)</string>
			<key>name</key>
			<string>string.double.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string-character-escape</string>
				</dict>
			</array>
		</dict>
		<key>qstring-single</key>
		<dict>
			<key>begin</key>
			<string>'</string>
			<key>end</key>
			<string>'|(?=$)</string>
			<key>name</key>
			<string>string.single.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string-character-escape</string>
				</dict>
			</array>
		</dict>
		<key>regex</key>
		<dict>
			<key>begin</key>
			<string>(?&lt;=[=(:,\[]|^|return|&amp;&amp;|\|\||!)\s*(/)(?![/*+{}?])</string>
			<key>end</key>
			<string>$|(/)[igm]*</string>
			<key>name</key>
			<string>string.regex.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\\.</string>
					<key>name</key>
					<string>constant.character.escape.ts</string>
				</dict>
				<dict>
					<key>match</key>
					<string>\[(\\\]|[^\]])*\]</string>
					<key>name</key>
					<string>constant.character.class.ts</string>
				</dict>
			</array>
		</dict>
		<key>relational-operator</key>
		<dict>
			<key>match</key>
			<string>===|==|=|!=|!==|&lt;=|&gt;=|&lt;&gt;|&lt;|&gt;</string>
			<key>name</key>
			<string>keyword.operator.comparison.ts</string>
		</dict>
		<key>return-type</key>
		<dict>
			<key>begin</key>
			<string>(?&lt;=\))\s*:</string>
			<key>end</key>
			<string>(?=$)|(?=\{|;|//)</string>
			<key>name</key>
			<string>meta.return.type.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type</string>
				</dict>
			</array>
		</dict>
		<key>static-modifier</key>
		<dict>
			<key>match</key>
			<string>\b(static)\b</string>
			<key>name</key>
			<string>keyword.other.ts</string>
		</dict>
		<key>storage-keyword</key>
		<dict>
			<key>match</key>
			<string>\b(number|boolean|string|any|var|let|function|const)\b</string>
			<key>name</key>
			<string>storage.type.ts</string>
		</dict>
		<key>string</key>
		<dict>
			<key>name</key>
			<string>string.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#qstring-single</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#qstring-double</string>
				</dict>
			</array>
		</dict>
		<key>string-character-escape</key>
		<dict>
			<key>match</key>
			<string>\\(x\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)</string>
			<key>name</key>
			<string>constant.character.escape</string>
		</dict>
		<key>switch-case</key>
		<dict>
			<key>begin</key>
			<string>(?&lt;!\.)\b(case|default)\b</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>:</string>
			<key>name</key>
			<string>case.expr.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
		<key>template</key>
		<dict>
			<key>begin</key>
			<string>`</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>string.template.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>`</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>string.template.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.template.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#template-substitution-element</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#template-string-contents</string>
				</dict>
			</array>
		</dict>
		<key>template-string-contents</key>
		<dict>
			<key>begin</key>
			<string>.*?</string>
			<key>end</key>
			<string>(?=(\$\{|`))</string>
			<key>name</key>
			<string>string.template.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#string-character-escape</string>
				</dict>
			</array>
		</dict>
		<key>template-substitution-element</key>
		<dict>
			<key>begin</key>
			<string>\$\{</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\}</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>template.element.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
		<key>this-literal</key>
		<dict>
			<key>match</key>
			<string>\b(this)\b</string>
			<key>name</key>
			<string>constant.language.this.ts</string>
		</dict>
		<key>type</key>
		<dict>
			<key>name</key>
			<string>meta.type.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type-primitive</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-tuple</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-object</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-operator</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-paren-or-function-type-parameters</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-function-return-type</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-name</string>
				</dict>
			</array>
		</dict>
		<key>type-annotation</key>
		<dict>
			<key>begin</key>
			<string>:</string>
			<key>end</key>
			<string>(?=$|[,);\}\]]|//)|(?==[^&gt;])|(?&lt;=[\}&gt;\]\)]|[a-zA-Z_$])\s*(?=\{)</string>
			<key>name</key>
			<string>meta.type.annotation.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
			</array>
		</dict>
		<key>type-declaration</key>
		<dict>
			<key>begin</key>
			<string>\b(type)\b\s+([a-zA-Z_$][\w$]*)\s*=\s*</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.other.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>storage.type.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=[,);&gt;]|var|type|function|class|interface)</string>
			<key>name</key>
			<string>meta.type.declaration.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type</string>
				</dict>
			</array>
		</dict>
		<key>type-function-return-type</key>
		<dict>
			<key>begin</key>
			<string>=&gt;</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=\s*[,\)\{=;&gt;]|//|$)</string>
			<key>name</key>
			<string>meta.type.function.return.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type</string>
				</dict>
			</array>
		</dict>
		<key>type-name</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>entity.name.type.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>[a-zA-Z_$][.\w$]*</string>
			<key>name</key>
			<string>meta.type.name.ts</string>
		</dict>
		<key>type-object</key>
		<dict>
			<key>begin</key>
			<string>\{</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.curly.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\}</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.curly.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.object.type.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#field-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#method-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#indexer-declaration</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type-annotation</string>
				</dict>
			</array>
		</dict>
		<key>type-operator</key>
		<dict>
			<key>match</key>
			<string>[.|]</string>
			<key>name</key>
			<string>keyword.operator.type.ts</string>
		</dict>
		<key>type-parameters</key>
		<dict>
			<key>begin</key>
			<string>([a-zA-Z_$][\w$]*)?(&lt;)</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>entity.name.type.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>meta.brace.angle.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=$)|(&gt;)</string>
			<key>endCaptures</key>
			<dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>meta.brace.angle.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.type.parameters.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>match</key>
					<string>\b(extends)\b</string>
					<key>name</key>
					<string>keyword.other.ts</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type</string>
				</dict>
			</array>
		</dict>
		<key>type-paren-or-function-type-parameters</key>
		<dict>
			<key>begin</key>
			<string>(?:\b(new)\b)?\s*\(</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.control.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\)</string>
			<key>name</key>
			<string>meta.type.paren.cover.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#type</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#function-type-parameters</string>
				</dict>
			</array>
		</dict>
		<key>type-primitive</key>
		<dict>
			<key>captures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.type.ts</string>
				</dict>
			</dict>
			<key>match</key>
			<string>\b(string|number|boolean|symbol|any|void)\b</string>
			<key>name</key>
			<string>meta.type.primitive.ts</string>
		</dict>
		<key>type-tuple</key>
		<dict>
			<key>begin</key>
			<string>\[</string>
			<key>beginCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.square.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>\]</string>
			<key>endCaptures</key>
			<dict>
				<key>0</key>
				<dict>
					<key>name</key>
					<string>meta.brace.square.ts</string>
				</dict>
			</dict>
			<key>name</key>
			<string>meta.type.tuple.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
			</array>
		</dict>
		<key>undefined-literal</key>
		<dict>
			<key>match</key>
			<string>\b(undefined)\b</string>
			<key>name</key>
			<string>constant.language.ts</string>
		</dict>
		<key>var-expr</key>
		<dict>
			<key>begin</key>
			<string>(?&lt;!\()\s*\b(var|let|const(?!\s+enum))\s+([a-zA-Z_$][\w$]*)</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>storage.type.ts</string>
				</dict>
				<key>2</key>
				<dict>
					<key>name</key>
					<string>variable.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=$|[;=\}\{])|(?&lt;=\})</string>
			<key>name</key>
			<string>meta.var.expr.ts</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#type-annotation</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#string</string>
				</dict>
				<dict>
					<key>include</key>
					<string>#comment</string>
				</dict>
			</array>
		</dict>
		<key>variable-initializer</key>
		<dict>
			<key>begin</key>
			<string>(=)</string>
			<key>beginCaptures</key>
			<dict>
				<key>1</key>
				<dict>
					<key>name</key>
					<string>keyword.operator.ts</string>
				</dict>
			</dict>
			<key>end</key>
			<string>(?=$|[,);=])</string>
			<key>patterns</key>
			<array>
				<dict>
					<key>include</key>
					<string>#expression</string>
				</dict>
			</array>
		</dict>
	</dict>
	<key>scopeName</key>
	<string>source.ts</string>
	<key>uuid</key>
	<string>ef98eb90-bf9b-11e4-bb52-0800200c9a66</string>
</dict>
</plist>