{
  "version": 3,
  "sources": ["../../../../../node_modules/monaco-textmate/src/utils.ts", "../../../../../node_modules/onigasm/lib/onigasm.js", "../../../../../node_modules/onigasm/src/onigasmH.ts", "../../../../../node_modules/onigasm/node_modules/yallist/iterator.js", "../../../../../node_modules/onigasm/node_modules/yallist/yallist.js", "../../../../../node_modules/onigasm/node_modules/lru-cache/index.js", "../../../../../node_modules/onigasm/src/OnigString.ts", "../../../../../node_modules/onigasm/src/OnigScanner.ts", "../../../../../node_modules/onigasm/src/OnigRegExp.ts", "../../../../../node_modules/onigasm/src/index.ts", "../../../../../node_modules/monaco-textmate/src/rule.ts", "../../../../../node_modules/monaco-textmate/src/matcher.ts", "../../../../../node_modules/monaco-textmate/src/debug.ts", "../../../../../node_modules/monaco-textmate/src/grammar.ts", "../../../../../node_modules/monaco-textmate/src/registry.ts", "../../../../../node_modules/fast-plist/release/src/main.js", "../../../../../node_modules/monaco-textmate/src/json.ts", "../../../../../node_modules/monaco-textmate/src/grammarReader.ts", "../../../../../node_modules/monaco-textmate/src/theme.ts", "../../../../../node_modules/monaco-textmate/src/main.ts", "../../../../../node_modules/monaco-editor-textmate/src/tm-to-monaco-token.ts", "../../../../../node_modules/monaco-editor-textmate/src/index.ts", "../../../../../node_modules/@framerjs/framer-events/lib/esm/generated/EditorActive6030.js", "../../../../../node_modules/@framerjs/framer-events/lib/esm/generated/EditorCloseFile.js", "../../../../../node_modules/@framerjs/framer-events/lib/esm/generated/EditorOpenFile.js", "../../src/code-editor/entry.tsx", "../../src/code-editor/CodeEditorManager.styles.ts", "../../src/code-editor/ErrorAndDecoratorManager.ts", "../../src/code-editor/EditableFile.ts", "../../src/code-editor/MonacoEditor.tsx", "../../src/code-editor/EditorActivityCounter.ts", "../../src/code-editor/MonacoEditorExtensions.ts", "../../src/utils/svgURL.ts", "../../src/code-editor/MonacoEditorIcons.ts", "../../src/code-editor/FileManager.ts", "../../src/code-editor/MonacoModelFactory.tsx", "../../src/code-editor/grammars/index.ts", "../../src/code-editor/grammars/TypeScriptReact.tmLanguage.json", "../../src/code-editor/MonacoGlobals.ts"],
  "sourcesContent": ["/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nimport { IOnigCaptureIndex } from 'onigasm';\n\nexport function clone<T>(something: T): T {\n\treturn doClone(something);\n}\n\nfunction doClone(something: any): any {\n\tif (Array.isArray(something)) {\n\t\treturn cloneArray(something);\n\t}\n\tif (typeof something === 'object') {\n\t\treturn cloneObj(something);\n\t}\n\treturn something;\n}\n\nfunction cloneArray(arr: any[]): any[] {\n\tlet r: any[] = [];\n\tfor (let i = 0, len = arr.length; i < len; i++) {\n\t\tr[i] = doClone(arr[i]);\n\t}\n\treturn r;\n}\n\nfunction cloneObj(obj: any): any {\n\tlet r: any = {};\n\tfor (let key in obj) {\n\t\tr[key] = doClone(obj[key]);\n\t}\n\treturn r;\n}\n\nexport function mergeObjects(target: any, ...sources: any[]): any {\n\tsources.forEach(source => {\n\t\tfor (let key in source) {\n\t\t\ttarget[key] = source[key];\n\t\t}\n\t});\n\treturn target;\n}\n\nlet CAPTURING_REGEX_SOURCE = /\\$(\\d+)|\\${(\\d+):\\/(downcase|upcase)}/;\n\nexport class RegexSource {\n\n\tpublic static hasCaptures(regexSource: string): boolean {\n\t\treturn CAPTURING_REGEX_SOURCE.test(regexSource);\n\t}\n\n\tpublic static replaceCaptures(regexSource: string, captureSource: string, captureIndices: IOnigCaptureIndex[]): string {\n\t\treturn regexSource.replace(CAPTURING_REGEX_SOURCE, (match: string, index: string, commandIndex: string, command: string) => {\n\t\t\tlet capture = captureIndices[parseInt(index || commandIndex, 10)];\n\t\t\tif (capture) {\n\t\t\t\tlet result = captureSource.substring(capture.start, capture.end);\n\t\t\t\t// Remove leading dots that would make the selector invalid\n\t\t\t\twhile (result[0] === '.') {\n\t\t\t\t\tresult = result.substring(1);\n\t\t\t\t}\n\t\t\t\tswitch (command) {\n\t\t\t\t\tcase 'downcase':\n\t\t\t\t\t\treturn result.toLowerCase();\n\t\t\t\t\tcase 'upcase':\n\t\t\t\t\t\treturn result.toUpperCase();\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn match;\n\t\t\t}\n\t\t});\n\t}\n}\n", "\nvar Onigasm = (function() {\n  var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n  return (\nfunction(Onigasm) {\n  Onigasm = Onigasm || {};\n\nvar Module=typeof Onigasm!==\"undefined\"?Onigasm:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=true;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readBinary;if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var STACK_ALIGN=16;function dynamicAlloc(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=ret+size+15&-16;if(end>_emscripten_get_heap_size()){abort()}HEAP32[DYNAMICTOP_PTR>>2]=end;return ret}function getNativeTypeSize(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return 4}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0,\"getNativeTypeSize invalid bits \"+bits+\", type \"+type);return bits/8}else{return 0}}}}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}function convertJsFunctionToWasm(func,sig){var typeSection=[1,0,1,96];var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={\"i\":127,\"j\":126,\"f\":125,\"d\":124};typeSection.push(sigParam.length);for(var i=0;i<sigParam.length;++i){typeSection.push(typeCodes[sigParam[i]])}if(sigRet==\"v\"){typeSection.push(0)}else{typeSection=typeSection.concat([1,typeCodes[sigRet]])}typeSection[1]=typeSection.length-2;var bytes=new Uint8Array([0,97,115,109,1,0,0,0].concat(typeSection,[2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0]));var module=new WebAssembly.Module(bytes);var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports.f;return wrappedFunc}function addFunctionWasm(func,sig){var table=wasmTable;var ret=table.length;try{table.grow(1)}catch(err){if(!err instanceof RangeError){throw err}throw\"Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.\"}try{table.set(ret,func)}catch(err){if(!err instanceof TypeError){throw err}assert(typeof sig!==\"undefined\",\"Missing signature argument to addFunction\");var wrapped=convertJsFunctionToWasm(func,sig);table.set(ret,wrapped)}return ret}function removeFunctionWasm(index){}var funcWrappers={};function dynCall(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}var tempRet0=0;var setTempRet0=function(value){tempRet0=value};var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime;if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(typeof WebAssembly!==\"object\"){err(\"no native wasm support detected\")}function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}var wasmMemory;var wasmTable=new WebAssembly.Table({\"initial\":244,\"maximum\":244+0,\"element\":\"anyfunc\"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);ret=convertReturnValue(ret);if(stack!==0)stackRestore(stack);return ret}var ALLOC_NONE=3;var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(u8Array[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str=\"\";while(idx<endPtr){var u0=u8Array[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|u8Array[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var STACK_BASE=5507664,DYNAMIC_BASE=5507664,DYNAMICTOP_PTR=264624;var INITIAL_TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||157286400;if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";out(what);err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";throw new WebAssembly.RuntimeError(what)}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile=\"onigasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={\"env\":asmLibraryArg,\"wasi_unstable\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&typeof fetch===\"function\"){fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function demangle(func){var __cxa_demangle_func=Module[\"___cxa_demangle\"]||Module[\"__cxa_demangle\"];assert(__cxa_demangle_func);try{var s=func;if(s.startsWith(\"__Z\"))s=s.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(HEAP32[status>>2]===0&&ret){return UTF8ToString(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}function demangleAll(text){var regex=/\\b_Z[\\w\\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+\" [\"+x+\"]\"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function _abort(){abort()}function _emscripten_get_heap_size(){return HEAP8.length}function _emscripten_get_sbrk_ptr(){return 264624}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=65536;var LIMIT=2147483648-PAGE_MULTIPLE;if(requestedSize>LIMIT){return false}var MIN_TOTAL_MEMORY=16777216;var newSize=Math.max(oldSize,MIN_TOTAL_MEMORY);while(newSize<requestedSize){if(newSize<=536870912){newSize=alignUp(2*newSize,PAGE_MULTIPLE)}else{newSize=Math.min(alignUp((3*newSize+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=emscripten_realloc_buffer(newSize);if(!replacement){return false}return true}var PATH={splitPath:function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(function(p){return!!p}),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))},join2:function(l,r){return PATH.normalize(l+\"/\"+r)}};var SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function _fd_close(fd){try{return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j<len;j++){SYSCALLS.printChar(fd,HEAPU8[ptr+j])}num+=len}HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _setTempRet0($i){setTempRet0($i|0)}var ASSERTIONS=false;var asmLibraryArg={\"abort\":_abort,\"emscripten_get_sbrk_ptr\":_emscripten_get_sbrk_ptr,\"emscripten_memcpy_big\":_emscripten_memcpy_big,\"emscripten_resize_heap\":_emscripten_resize_heap,\"fd_close\":_fd_close,\"fd_seek\":_fd_seek,\"fd_write\":_fd_write,\"memory\":wasmMemory,\"setTempRet0\":_setTempRet0,\"table\":wasmTable};var asm=createWasm();Module[\"asm\"]=asm;var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return Module[\"asm\"][\"__wasm_call_ctors\"].apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return Module[\"asm\"][\"malloc\"].apply(null,arguments)};var _free=Module[\"_free\"]=function(){return Module[\"asm\"][\"free\"].apply(null,arguments)};var _getLastError=Module[\"_getLastError\"]=function(){return Module[\"asm\"][\"getLastError\"].apply(null,arguments)};var _compilePattern=Module[\"_compilePattern\"]=function(){return Module[\"asm\"][\"compilePattern\"].apply(null,arguments)};var _disposeCompiledPatterns=Module[\"_disposeCompiledPatterns\"]=function(){return Module[\"asm\"][\"disposeCompiledPatterns\"].apply(null,arguments)};var _findBestMatch=Module[\"_findBestMatch\"]=function(){return Module[\"asm\"][\"findBestMatch\"].apply(null,arguments)};var ___cxa_demangle=Module[\"___cxa_demangle\"]=function(){return Module[\"asm\"][\"__cxa_demangle\"].apply(null,arguments)};var _setThrew=Module[\"_setThrew\"]=function(){return Module[\"asm\"][\"setThrew\"].apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return Module[\"asm\"][\"stackSave\"].apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return Module[\"asm\"][\"stackAlloc\"].apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return Module[\"asm\"][\"stackRestore\"].apply(null,arguments)};var __growWasmMemory=Module[\"__growWasmMemory\"]=function(){return Module[\"asm\"][\"__growWasmMemory\"].apply(null,arguments)};var dynCall_vi=Module[\"dynCall_vi\"]=function(){return Module[\"asm\"][\"dynCall_vi\"].apply(null,arguments)};var dynCall_iiii=Module[\"dynCall_iiii\"]=function(){return Module[\"asm\"][\"dynCall_iiii\"].apply(null,arguments)};var dynCall_iiiii=Module[\"dynCall_iiiii\"]=function(){return Module[\"asm\"][\"dynCall_iiiii\"].apply(null,arguments)};var dynCall_iii=Module[\"dynCall_iii\"]=function(){return Module[\"asm\"][\"dynCall_iii\"].apply(null,arguments)};var dynCall_iidiiii=Module[\"dynCall_iidiiii\"]=function(){return Module[\"asm\"][\"dynCall_iidiiii\"].apply(null,arguments)};var dynCall_vii=Module[\"dynCall_vii\"]=function(){return Module[\"asm\"][\"dynCall_vii\"].apply(null,arguments)};var dynCall_ii=Module[\"dynCall_ii\"]=function(){return Module[\"asm\"][\"dynCall_ii\"].apply(null,arguments)};var dynCall_i=Module[\"dynCall_i\"]=function(){return Module[\"asm\"][\"dynCall_i\"].apply(null,arguments)};var dynCall_v=Module[\"dynCall_v\"]=function(){return Module[\"asm\"][\"dynCall_v\"].apply(null,arguments)};var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=function(){return Module[\"asm\"][\"dynCall_viiiiii\"].apply(null,arguments)};var dynCall_viiiii=Module[\"dynCall_viiiii\"]=function(){return Module[\"asm\"][\"dynCall_viiiii\"].apply(null,arguments)};var dynCall_viiii=Module[\"dynCall_viiii\"]=function(){return Module[\"asm\"][\"dynCall_viiii\"].apply(null,arguments)};var dynCall_jiji=Module[\"dynCall_jiji\"]=function(){return Module[\"asm\"][\"dynCall_jiji\"].apply(null,arguments)};Module[\"asm\"]=asm;Module[\"ccall\"]=ccall;var calledRun;Module[\"then\"]=function(func){if(calledRun){func(Module)}else{var old=Module[\"onRuntimeInitialized\"];Module[\"onRuntimeInitialized\"]=function(){if(old)old();func(Module)}}return Module};function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}noExitRuntime=true;run();\n\n\n  return Onigasm\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n      module.exports = Onigasm;\n    else if (typeof define === 'function' && define['amd'])\n      define([], function() { return Onigasm; });\n    else if (typeof exports === 'object')\n      exports[\"Onigasm\"] = Onigasm;\n    ", "// Just to keep typescript quiet\ndeclare const require\ndeclare const WebAssembly\n\nconst OnigasmModuleFactory = require('./onigasm.js' /** when TS is compiled to JS, this will mean `lib/onigasm.js` (emitted by `emcc`) */)\n\n/**\n * Handle to onigasm module (the JS glue code emitted by emscripten, that provides access to C/C++ runtime)\n *\n * Single handle shared among modules that decorate the C runtime to deliver `atom/node-oniguruma` API\n */\nexport let onigasmH\n\nasync function initModule(bytes: ArrayBuffer) {\n    return new Promise((resolve, reject) => {\n        const { log, warn, error } = console\n        OnigasmModuleFactory({\n            instantiateWasm(imports, successCallback) {\n                WebAssembly.instantiate(bytes, imports)\n                    .then((output) => {\n                        successCallback(output.instance)\n                    })\n                    .catch((e) => {\n                        throw e\n                    })\n                return {}\n            },\n        })\n            .then(moduleH => {\n                onigasmH = moduleH\n                resolve()\n            })\n        if (typeof print !== 'undefined') {\n            // can be removed when https://github.com/emscripten-core/emscripten/issues/9829 is fixed.\n            // tslint:disable-next-line:no-console\n            console.log = log\n            // tslint:disable-next-line:no-console\n            console.error = error\n            // tslint:disable-next-line:no-console\n            console.warn = warn\n        }\n    })\n}\n\nlet isInitialized = false\n\n/**\n * Mount the .wasm file that will act as library's \"backend\"\n * @param data Path to .wasm file or it's ArrayBuffer\n */\nexport async function loadWASM(data: string | ArrayBuffer) {\n    if (isInitialized) {\n        throw new Error(`Onigasm#init has been called and was succesful, subsequent calls are not allowed once initialized`)\n    }\n    if (typeof data === 'string') {\n        const arrayBuffer = await (await fetch(data)).arrayBuffer()\n        await initModule(arrayBuffer)\n    } else if (data instanceof ArrayBuffer) {\n        await initModule(data)\n    } else {\n        throw new TypeError(`Expected a string (URL of .wasm file) or ArrayBuffer (.wasm file itself) as first parameter`)\n    }\n\n    isInitialized = true\n}\n", "'use strict'\nmodule.exports = function (Yallist) {\n  Yallist.prototype[Symbol.iterator] = function* () {\n    for (let walker = this.head; walker; walker = walker.next) {\n      yield walker.value\n    }\n  }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n  var self = this\n  if (!(self instanceof Yallist)) {\n    self = new Yallist()\n  }\n\n  self.tail = null\n  self.head = null\n  self.length = 0\n\n  if (list && typeof list.forEach === 'function') {\n    list.forEach(function (item) {\n      self.push(item)\n    })\n  } else if (arguments.length > 0) {\n    for (var i = 0, l = arguments.length; i < l; i++) {\n      self.push(arguments[i])\n    }\n  }\n\n  return self\n}\n\nYallist.prototype.removeNode = function (node) {\n  if (node.list !== this) {\n    throw new Error('removing node which does not belong to this list')\n  }\n\n  var next = node.next\n  var prev = node.prev\n\n  if (next) {\n    next.prev = prev\n  }\n\n  if (prev) {\n    prev.next = next\n  }\n\n  if (node === this.head) {\n    this.head = next\n  }\n  if (node === this.tail) {\n    this.tail = prev\n  }\n\n  node.list.length--\n  node.next = null\n  node.prev = null\n  node.list = null\n\n  return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n  if (node === this.head) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var head = this.head\n  node.list = this\n  node.next = head\n  if (head) {\n    head.prev = node\n  }\n\n  this.head = node\n  if (!this.tail) {\n    this.tail = node\n  }\n  this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n  if (node === this.tail) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var tail = this.tail\n  node.list = this\n  node.prev = tail\n  if (tail) {\n    tail.next = node\n  }\n\n  this.tail = node\n  if (!this.head) {\n    this.head = node\n  }\n  this.length++\n}\n\nYallist.prototype.push = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    push(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.unshift = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    unshift(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.pop = function () {\n  if (!this.tail) {\n    return undefined\n  }\n\n  var res = this.tail.value\n  this.tail = this.tail.prev\n  if (this.tail) {\n    this.tail.next = null\n  } else {\n    this.head = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.shift = function () {\n  if (!this.head) {\n    return undefined\n  }\n\n  var res = this.head.value\n  this.head = this.head.next\n  if (this.head) {\n    this.head.prev = null\n  } else {\n    this.tail = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.head, i = 0; walker !== null; i++) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.next\n  }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.prev\n  }\n}\n\nYallist.prototype.get = function (n) {\n  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.next\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.getReverse = function (n) {\n  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.prev\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.head; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.next\n  }\n  return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.tail; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.prev\n  }\n  return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n  var acc\n  var walker = this.head\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.head) {\n    walker = this.head.next\n    acc = this.head.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = 0; walker !== null; i++) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.next\n  }\n\n  return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n  var acc\n  var walker = this.tail\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.tail) {\n    walker = this.tail.prev\n    acc = this.tail.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = this.length - 1; walker !== null; i--) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.prev\n  }\n\n  return acc\n}\n\nYallist.prototype.toArray = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.head; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.next\n  }\n  return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.tail; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.prev\n  }\n  return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n    walker = walker.next\n  }\n  for (; walker !== null && i < to; i++, walker = walker.next) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n    walker = walker.prev\n  }\n  for (; walker !== null && i > from; i--, walker = walker.prev) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount /*, ...nodes */) {\n  if (start > this.length) {\n    start = this.length - 1\n  }\n  if (start < 0) {\n    start = this.length + start;\n  }\n\n  for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n    walker = walker.next\n  }\n\n  var ret = []\n  for (var i = 0; walker && i < deleteCount; i++) {\n    ret.push(walker.value)\n    walker = this.removeNode(walker)\n  }\n  if (walker === null) {\n    walker = this.tail\n  }\n\n  if (walker !== this.head && walker !== this.tail) {\n    walker = walker.prev\n  }\n\n  for (var i = 2; i < arguments.length; i++) {\n    walker = insert(this, walker, arguments[i])\n  }\n  return ret;\n}\n\nYallist.prototype.reverse = function () {\n  var head = this.head\n  var tail = this.tail\n  for (var walker = head; walker !== null; walker = walker.prev) {\n    var p = walker.prev\n    walker.prev = walker.next\n    walker.next = p\n  }\n  this.head = tail\n  this.tail = head\n  return this\n}\n\nfunction insert (self, node, value) {\n  var inserted = node === self.head ?\n    new Node(value, null, node, self) :\n    new Node(value, node, node.next, self)\n\n  if (inserted.next === null) {\n    self.tail = inserted\n  }\n  if (inserted.prev === null) {\n    self.head = inserted\n  }\n\n  self.length++\n\n  return inserted\n}\n\nfunction push (self, item) {\n  self.tail = new Node(item, self.tail, null, self)\n  if (!self.head) {\n    self.head = self.tail\n  }\n  self.length++\n}\n\nfunction unshift (self, item) {\n  self.head = new Node(item, null, self.head, self)\n  if (!self.tail) {\n    self.tail = self.head\n  }\n  self.length++\n}\n\nfunction Node (value, prev, next, list) {\n  if (!(this instanceof Node)) {\n    return new Node(value, prev, next, list)\n  }\n\n  this.list = list\n  this.value = value\n\n  if (prev) {\n    prev.next = this\n    this.prev = prev\n  } else {\n    this.prev = null\n  }\n\n  if (next) {\n    next.prev = this\n    this.next = next\n  } else {\n    this.next = null\n  }\n}\n\ntry {\n  // add if support for Symbol.iterator is present\n  require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest.  the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node.  This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n  constructor (options) {\n    if (typeof options === 'number')\n      options = { max: options }\n\n    if (!options)\n      options = {}\n\n    if (options.max && (typeof options.max !== 'number' || options.max < 0))\n      throw new TypeError('max must be a non-negative number')\n    // Kind of weird to have a default max of Infinity, but oh well.\n    const max = this[MAX] = options.max || Infinity\n\n    const lc = options.length || naiveLength\n    this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n    this[ALLOW_STALE] = options.stale || false\n    if (options.maxAge && typeof options.maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n    this[MAX_AGE] = options.maxAge || 0\n    this[DISPOSE] = options.dispose\n    this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n    this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n    this.reset()\n  }\n\n  // resize the cache when the max changes.\n  set max (mL) {\n    if (typeof mL !== 'number' || mL < 0)\n      throw new TypeError('max must be a non-negative number')\n\n    this[MAX] = mL || Infinity\n    trim(this)\n  }\n  get max () {\n    return this[MAX]\n  }\n\n  set allowStale (allowStale) {\n    this[ALLOW_STALE] = !!allowStale\n  }\n  get allowStale () {\n    return this[ALLOW_STALE]\n  }\n\n  set maxAge (mA) {\n    if (typeof mA !== 'number')\n      throw new TypeError('maxAge must be a non-negative number')\n\n    this[MAX_AGE] = mA\n    trim(this)\n  }\n  get maxAge () {\n    return this[MAX_AGE]\n  }\n\n  // resize the cache when the lengthCalculator changes.\n  set lengthCalculator (lC) {\n    if (typeof lC !== 'function')\n      lC = naiveLength\n\n    if (lC !== this[LENGTH_CALCULATOR]) {\n      this[LENGTH_CALCULATOR] = lC\n      this[LENGTH] = 0\n      this[LRU_LIST].forEach(hit => {\n        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n        this[LENGTH] += hit.length\n      })\n    }\n    trim(this)\n  }\n  get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n  get length () { return this[LENGTH] }\n  get itemCount () { return this[LRU_LIST].length }\n\n  rforEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].tail; walker !== null;) {\n      const prev = walker.prev\n      forEachStep(this, fn, walker, thisp)\n      walker = prev\n    }\n  }\n\n  forEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].head; walker !== null;) {\n      const next = walker.next\n      forEachStep(this, fn, walker, thisp)\n      walker = next\n    }\n  }\n\n  keys () {\n    return this[LRU_LIST].toArray().map(k => k.key)\n  }\n\n  values () {\n    return this[LRU_LIST].toArray().map(k => k.value)\n  }\n\n  reset () {\n    if (this[DISPOSE] &&\n        this[LRU_LIST] &&\n        this[LRU_LIST].length) {\n      this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n    }\n\n    this[CACHE] = new Map() // hash of items by key\n    this[LRU_LIST] = new Yallist() // list of items in order of use recency\n    this[LENGTH] = 0 // length of items in the list\n  }\n\n  dump () {\n    return this[LRU_LIST].map(hit =>\n      isStale(this, hit) ? false : {\n        k: hit.key,\n        v: hit.value,\n        e: hit.now + (hit.maxAge || 0)\n      }).toArray().filter(h => h)\n  }\n\n  dumpLru () {\n    return this[LRU_LIST]\n  }\n\n  set (key, value, maxAge) {\n    maxAge = maxAge || this[MAX_AGE]\n\n    if (maxAge && typeof maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n\n    const now = maxAge ? Date.now() : 0\n    const len = this[LENGTH_CALCULATOR](value, key)\n\n    if (this[CACHE].has(key)) {\n      if (len > this[MAX]) {\n        del(this, this[CACHE].get(key))\n        return false\n      }\n\n      const node = this[CACHE].get(key)\n      const item = node.value\n\n      // dispose of the old one before overwriting\n      // split out into 2 ifs for better coverage tracking\n      if (this[DISPOSE]) {\n        if (!this[NO_DISPOSE_ON_SET])\n          this[DISPOSE](key, item.value)\n      }\n\n      item.now = now\n      item.maxAge = maxAge\n      item.value = value\n      this[LENGTH] += len - item.length\n      item.length = len\n      this.get(key)\n      trim(this)\n      return true\n    }\n\n    const hit = new Entry(key, value, len, now, maxAge)\n\n    // oversized objects fall out of cache automatically.\n    if (hit.length > this[MAX]) {\n      if (this[DISPOSE])\n        this[DISPOSE](key, value)\n\n      return false\n    }\n\n    this[LENGTH] += hit.length\n    this[LRU_LIST].unshift(hit)\n    this[CACHE].set(key, this[LRU_LIST].head)\n    trim(this)\n    return true\n  }\n\n  has (key) {\n    if (!this[CACHE].has(key)) return false\n    const hit = this[CACHE].get(key).value\n    return !isStale(this, hit)\n  }\n\n  get (key) {\n    return get(this, key, true)\n  }\n\n  peek (key) {\n    return get(this, key, false)\n  }\n\n  pop () {\n    const node = this[LRU_LIST].tail\n    if (!node)\n      return null\n\n    del(this, node)\n    return node.value\n  }\n\n  del (key) {\n    del(this, this[CACHE].get(key))\n  }\n\n  load (arr) {\n    // reset the cache\n    this.reset()\n\n    const now = Date.now()\n    // A previous serialized cache has the most recent items first\n    for (let l = arr.length - 1; l >= 0; l--) {\n      const hit = arr[l]\n      const expiresAt = hit.e || 0\n      if (expiresAt === 0)\n        // the item was created without expiration in a non aged cache\n        this.set(hit.k, hit.v)\n      else {\n        const maxAge = expiresAt - now\n        // dont add already expired items\n        if (maxAge > 0) {\n          this.set(hit.k, hit.v, maxAge)\n        }\n      }\n    }\n  }\n\n  prune () {\n    this[CACHE].forEach((value, key) => get(this, key, false))\n  }\n}\n\nconst get = (self, key, doUse) => {\n  const node = self[CACHE].get(key)\n  if (node) {\n    const hit = node.value\n    if (isStale(self, hit)) {\n      del(self, node)\n      if (!self[ALLOW_STALE])\n        return undefined\n    } else {\n      if (doUse) {\n        if (self[UPDATE_AGE_ON_GET])\n          node.value.now = Date.now()\n        self[LRU_LIST].unshiftNode(node)\n      }\n    }\n    return hit.value\n  }\n}\n\nconst isStale = (self, hit) => {\n  if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n    return false\n\n  const diff = Date.now() - hit.now\n  return hit.maxAge ? diff > hit.maxAge\n    : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n  if (self[LENGTH] > self[MAX]) {\n    for (let walker = self[LRU_LIST].tail;\n      self[LENGTH] > self[MAX] && walker !== null;) {\n      // We know that we're about to delete this one, and also\n      // what the next least recently used key will be, so just\n      // go ahead and set it now.\n      const prev = walker.prev\n      del(self, walker)\n      walker = prev\n    }\n  }\n}\n\nconst del = (self, node) => {\n  if (node) {\n    const hit = node.value\n    if (self[DISPOSE])\n      self[DISPOSE](hit.key, hit.value)\n\n    self[LENGTH] -= hit.length\n    self[CACHE].delete(hit.key)\n    self[LRU_LIST].removeNode(node)\n  }\n}\n\nclass Entry {\n  constructor (key, value, length, now, maxAge) {\n    this.key = key\n    this.value = value\n    this.length = length\n    this.now = now\n    this.maxAge = maxAge || 0\n  }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n  let hit = node.value\n  if (isStale(self, hit)) {\n    del(self, node)\n    if (!self[ALLOW_STALE])\n      hit = undefined\n  }\n  if (hit)\n    fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n", "\ntype UintArray = Uint8Array | Uint16Array | Uint32Array\n\nclass OnigString {\n    private source: string\n    private _utf8Bytes: Uint8Array | null\n\n    /**\n     * utf16-offset where the mapping table starts. Before that index: utf16-index === utf8-index\n     */\n    private _mappingTableStartOffset: number\n    /**\n     * utf-16 to utf-8 mapping table for all uft-8 indexes starting at `_mappingTableStartOffset`. utf8-index are always starting at 0.\n     * `null` if there are no multibyte characters in the utf8 string and all utf-8 indexes are matching the utf-16 indexes.\n     * Example: _mappingTableStartOffset === 10, _utf16OffsetToUtf8 = [0, 3, 6] -> _utf8Indexes[10] = 10, _utf8Indexes[11] = 13\n     */\n    private _utf8Indexes: UintArray | null\n\n    constructor(content: string) {\n        if (typeof content !== 'string') {\n            throw new TypeError('Argument must be a string')\n        }\n        this.source = content\n        this._utf8Bytes = null\n        this._utf8Indexes = null\n\n    }\n\n    public get utf8Bytes(): Uint8Array {\n        if (!this._utf8Bytes) {\n            this.encode()\n        }\n        return this._utf8Bytes\n    }\n\n    /**\n     * Returns `null` if all utf8 offsets match utf-16 offset (content has no multi byte characters)\n     */\n    private get utf8Indexes(): UintArray {\n        if (!this._utf8Bytes) {\n            this.encode()\n        }\n        return this._utf8Indexes\n    }\n\n    public get content(): string {\n        return this.source\n    }\n\n    public get length(): number {\n        return this.source.length\n    }\n\n    public substring = (start, end) => {\n        return this.source.substring(start, end)\n    }\n\n    public toString = (start, end) => {\n        return this.source\n    }\n\n    public get hasMultiByteCharacters() {\n        return this.utf8Indexes !== null\n    }\n\n    public convertUtf8OffsetToUtf16(utf8Offset: number): number {\n        if (utf8Offset < 0) {\n            return 0\n        }\n        const utf8Array = this._utf8Bytes\n        if (utf8Offset >= utf8Array.length - 1) {\n            return this.source.length\n        }\n\n        const utf8OffsetMap = this.utf8Indexes\n        if (utf8OffsetMap && utf8Offset >= this._mappingTableStartOffset) {\n            return findFirstInSorted(utf8OffsetMap, utf8Offset - this._mappingTableStartOffset) + this._mappingTableStartOffset\n        }\n        return utf8Offset\n    }\n\n    public convertUtf16OffsetToUtf8(utf16Offset: number): number {\n        if (utf16Offset < 0) {\n            return 0\n        }\n        const utf8Array = this._utf8Bytes\n        if (utf16Offset >= this.source.length) {\n            return utf8Array.length - 1\n        }\n\n        const utf8OffsetMap = this.utf8Indexes\n        if (utf8OffsetMap && utf16Offset >= this._mappingTableStartOffset) {\n            return utf8OffsetMap[utf16Offset - this._mappingTableStartOffset] + this._mappingTableStartOffset\n        }\n        return utf16Offset\n    }\n\n    private encode(): void {\n        const str = this.source\n        const n = str.length\n        let utf16OffsetToUtf8: UintArray\n        let utf8Offset = 0\n        let mappingTableStartOffset = 0\n        function createOffsetTable(startOffset: number) {\n            const maxUtf8Len = (n - startOffset) * 3\n            if (maxUtf8Len <= 0xff) {\n                utf16OffsetToUtf8 = new Uint8Array(n - startOffset)\n            } else if (maxUtf8Len <= 0xffff) {\n                utf16OffsetToUtf8 = new Uint16Array(n - startOffset)\n            } else {\n                utf16OffsetToUtf8 = new Uint32Array(n - startOffset)\n            }\n            mappingTableStartOffset = startOffset\n            utf16OffsetToUtf8[utf8Offset++] = 0\n        }\n\n        const u8view = new Uint8Array((n * 3) /* alloc max now, trim later*/ + 1 /** null termination character */)\n\n        let ptrHead = 0\n        let i = 0\n        // for some reason, v8 is faster with str.length than using a variable (might be illusion)\n        while (i < str.length) {\n            let codepoint\n            const c = str.charCodeAt(i)\n\n            if (utf16OffsetToUtf8) {\n                utf16OffsetToUtf8[utf8Offset++] = ptrHead - mappingTableStartOffset\n            }\n\n            if (c < 0xD800 || c > 0xDFFF) {\n                codepoint = c\n            }\n\n            else if (c >= 0xDC00) {\n                codepoint = 0xFFFD\n            }\n\n            else {\n                if (i === n - 1) {\n                    codepoint = 0xFFFD\n                }\n                else {\n                    const d = str.charCodeAt(i + 1)\n\n                    if (0xDC00 <= d && d <= 0xDFFF) {\n                        if (!utf16OffsetToUtf8) {\n                            createOffsetTable(i)\n                        }\n\n                        const a = c & 0x3FF\n\n                        const b = d & 0x3FF\n\n                        codepoint = 0x10000 + (a << 10) + b\n                        i += 1\n\n                        utf16OffsetToUtf8[utf8Offset++] = ptrHead - mappingTableStartOffset\n                    }\n\n                    else {\n                        codepoint = 0xFFFD\n                    }\n                }\n            }\n\n            let bytesRequiredToEncode: number\n            let offset: number\n\n            if (codepoint <= 0x7F) {\n                bytesRequiredToEncode = 1\n                offset = 0\n            } else if (codepoint <= 0x07FF) {\n                bytesRequiredToEncode = 2\n                offset = 0xC0\n            } else if (codepoint <= 0xFFFF) {\n                bytesRequiredToEncode = 3\n                offset = 0xE0\n            } else {\n                bytesRequiredToEncode = 4\n                offset = 0xF0\n            }\n\n            if (bytesRequiredToEncode === 1) {\n                u8view[ptrHead++] = codepoint\n            }\n            else {\n                if (!utf16OffsetToUtf8) {\n                    createOffsetTable(ptrHead)\n                }\n                u8view[ptrHead++] = (codepoint >> (6 * (--bytesRequiredToEncode))) + offset\n\n                while (bytesRequiredToEncode > 0) {\n\n                    const temp = codepoint >> (6 * (bytesRequiredToEncode - 1))\n\n                    u8view[ptrHead++] = (0x80 | (temp & 0x3F))\n\n                    bytesRequiredToEncode -= 1\n                }\n            }\n\n            i += 1\n        }\n\n        const utf8 = u8view.slice(0, ptrHead + 1)\n        utf8[ptrHead] = 0x00\n\n        this._utf8Bytes = utf8\n        if (utf16OffsetToUtf8) { // set if UTF-16 surrogate chars or multi-byte characters found\n            this._utf8Indexes = utf16OffsetToUtf8\n            this._mappingTableStartOffset = mappingTableStartOffset\n        }\n    }\n}\n\nfunction findFirstInSorted<T>(array: UintArray, i: number): number {\n    let low = 0\n    let high = array.length\n\n    if (high === 0) {\n        return 0 // no children\n    }\n    while (low < high) {\n        const mid = Math.floor((low + high) / 2)\n        if (array[mid] >= i) {\n            high = mid\n        } else {\n            low = mid + 1\n        }\n    }\n\n    // low is on the index of the first value >= i or array.length. Decrement low until we find array[low] <= i\n    while (low > 0 && (low >= array.length || array[low] > i)) {\n        low--\n    }\n    // check whether we are on the second index of a utf-16 surrogate char. If so, go to the first index.\n    if (low > 0 && array[low] === array[low - 1]) {\n        low--\n    }\n\n    return low\n\n}\n\nexport default OnigString\n", "import * as LRUCache from 'lru-cache'\nimport { onigasmH } from './onigasmH'\nimport OnigString from './OnigString'\n\n/**\n * Every instance of OnigScanner internally calls native libonig API\n * Since (at the moment) transferring complex objects between C runtime and JS runtime is not easy,\n * pointers are used to tap into their runtimes to read values (for example result of regex match)\n */\ninterface INativeOnigHInfo {\n    /**\n     * regex_t* is used by libonig to match string against an expression\n     * this is the output of compiling raw string pattern to libonig's internal representation\n     */\n    regexTPtrs: Uint8Array | null\n}\n\nexport interface IOnigCaptureIndex {\n    index: number\n    start: number\n    end: number\n    length: number\n}\n\nexport interface IOnigMatch {\n    index: number\n    captureIndices: IOnigCaptureIndex[]\n    scanner: OnigScanner\n}\n\n/**\n * Allocates space on the heap and copies the string bytes on to it\n * @param str\n * @returns pointer to the first byte's address on heap\n */\nfunction mallocAndWriteString(str: OnigString): number {\n    const ptr = onigasmH._malloc(str.utf8Bytes.length)\n    onigasmH.HEAPU8.set(str.utf8Bytes, ptr)\n    return ptr\n}\n\nfunction convertUTF8BytesFromPtrToString(ptr: number): string {\n    const chars = []\n    let i = 0\n    while (onigasmH.HEAPU8[ptr] !== 0x00) {\n        chars[i++] = onigasmH.HEAPU8[ptr++]\n    }\n    return chars.join()\n}\n\nconst cache = new LRUCache<OnigScanner, INativeOnigHInfo>({\n    dispose: (scanner: OnigScanner, info: INativeOnigHInfo) => {\n        const regexTPtrsPtr = onigasmH._malloc(info.regexTPtrs.length)\n        onigasmH.HEAPU8.set(info.regexTPtrs, regexTPtrsPtr)\n        const status = onigasmH._disposeCompiledPatterns(regexTPtrsPtr, scanner.patterns.length)\n        if (status !== 0) {\n            const errMessage = convertUTF8BytesFromPtrToString(onigasmH._getLastError())\n            throw new Error(errMessage)\n        }\n        onigasmH._free(regexTPtrsPtr)\n    },\n    max: 1000,\n})\n\nexport class OnigScanner {\n    private sources: string[]\n    /**\n     * Create a new scanner with the given patterns\n     * @param patterns  An array of string patterns\n     */\n    constructor(patterns: string[]) {\n        if (onigasmH === null) {\n            throw new Error(`Onigasm has not been initialized, call loadWASM from 'onigasm' exports before using any other API`)\n        }\n        for (let i = 0; i < patterns.length; i++) {\n            const pattern = patterns[i]\n            if (typeof pattern !== 'string') {\n                throw new TypeError(`First parameter to OnigScanner constructor must be array of (pattern) strings`)\n            }\n        }\n        this.sources = patterns.slice()\n    }\n\n    public get patterns() {\n        return this.sources.slice()\n    }\n\n    /**\n     * Find the next match from a given position\n     * @param string The string to search\n     * @param startPosition The optional position to start at, defaults to 0\n     * @param callback The (error, match) function to call when done, match will null when there is no match\n     */\n    public findNextMatch(string: string | OnigString, startPosition: number, callback: (err, match?: IOnigMatch) => void) {\n        if (startPosition == null) { startPosition = 0 }\n        if (typeof startPosition === 'function') {\n            callback = startPosition\n            startPosition = 0\n        }\n\n        try {\n            const match = this.findNextMatchSync(string, startPosition)\n            callback(null, match)\n        } catch (error) {\n            callback(error)\n        }\n    }\n\n    /**\n     * Find the next match from a given position\n     * @param string The string to search\n     * @param startPosition The optional position to start at, defaults to 0\n     */\n    public findNextMatchSync(string: string | OnigString, startPosition: number): IOnigMatch {\n        if (startPosition == null) { startPosition = 0 }\n        startPosition = this.convertToNumber(startPosition)\n\n        let onigNativeInfo = cache.get(this)\n        let status = 0\n        if (!onigNativeInfo) {\n            const regexTAddrRecieverPtr = onigasmH._malloc(4)\n            const regexTPtrs = []\n            for (let i = 0; i < this.sources.length; i++) {\n                const pattern = this.sources[i]\n                const patternStrPtr = mallocAndWriteString(new OnigString(pattern))\n                status = onigasmH._compilePattern(patternStrPtr, regexTAddrRecieverPtr)\n                if (status !== 0) {\n                    const errMessage = convertUTF8BytesFromPtrToString(onigasmH._getLastError())\n                    throw new Error(errMessage)\n                }\n                const regexTAddress = onigasmH.HEAP32[regexTAddrRecieverPtr / 4]\n                regexTPtrs.push(regexTAddress)\n                onigasmH._free(patternStrPtr)\n            }\n            onigNativeInfo = {\n                regexTPtrs: new Uint8Array(Uint32Array.from(regexTPtrs).buffer),\n            }\n            onigasmH._free(regexTAddrRecieverPtr)\n            cache.set(this, onigNativeInfo)\n        }\n\n        const onigString = string instanceof OnigString ? string : new OnigString(this.convertToString(string))\n        const strPtr = mallocAndWriteString(onigString)\n        const resultInfoReceiverPtr = onigasmH._malloc(8)\n        const regexTPtrsPtr = onigasmH._malloc(onigNativeInfo.regexTPtrs.length)\n        onigasmH.HEAPU8.set(onigNativeInfo.regexTPtrs, regexTPtrsPtr)\n\n        status = onigasmH._findBestMatch(\n            // regex_t **patterns\n            regexTPtrsPtr,\n            // int patternCount\n            this.sources.length,\n            // UChar *utf8String\n            strPtr,\n            // int strLen\n            onigString.utf8Bytes.length - 1,\n            // int startOffset\n            onigString.convertUtf16OffsetToUtf8(startPosition),\n            // int *resultInfo\n            resultInfoReceiverPtr,\n        )\n\n        if (status !== 0) {\n            const errMessage = convertUTF8BytesFromPtrToString(onigasmH._getLastError())\n            throw new Error(errMessage)\n        }\n        const [\n            // The index of pattern which matched the string at least offset from 0 (start)\n            bestPatternIdx,\n\n            // Begin address of capture info encoded as pairs\n            // like [start, end, start, end, start, end, ...]\n            //  - first start-end pair is entire match (index 0 and 1)\n            //  - subsequent pairs are capture groups (2, 3 = first capture group, 4, 5 = second capture group and so on)\n            encodedResultBeginAddress,\n\n            // Length of the [start, end, ...] sequence so we know how much memory to read (will always be 0 or multiple of 2)\n            encodedResultLength,\n        ] = new Uint32Array(onigasmH.HEAPU32.buffer, resultInfoReceiverPtr, 3)\n\n        onigasmH._free(strPtr)\n        onigasmH._free(resultInfoReceiverPtr)\n        onigasmH._free(regexTPtrsPtr)\n\n        if (encodedResultLength > 0) {\n            const encodedResult = new Uint32Array(onigasmH.HEAPU32.buffer, encodedResultBeginAddress, encodedResultLength)\n            const captureIndices = []\n            let i = 0\n            let captureIdx = 0\n            while (i < encodedResultLength) {\n                const index = captureIdx++\n                let start = encodedResult[i++]\n                let end = encodedResult[i++]\n                if (onigString.hasMultiByteCharacters) {\n                    start = onigString.convertUtf8OffsetToUtf16(start)\n                    end = onigString.convertUtf8OffsetToUtf16(end)\n                }\n                captureIndices.push({\n                    end,\n                    index,\n                    length: end - start,\n                    start,\n                })\n            }\n            onigasmH._free(encodedResultBeginAddress)\n            return {\n                captureIndices,\n                index: bestPatternIdx,\n                scanner: this,\n            }\n        }\n        return null\n    }\n\n    public convertToString(value) {\n        if (value === undefined) { return 'undefined' }\n        if (value === null) { return 'null' }\n        if (value instanceof OnigString) { return value.content }\n        return value.toString()\n    }\n\n    public convertToNumber(value) {\n        value = parseInt(value, 10)\n        if (!isFinite(value)) { value = 0 }\n        value = Math.max(value, 0)\n        return value\n    }\n}\n\nexport default OnigScanner\n", "import OnigScanner, { IOnigCaptureIndex } from './OnigScanner'\nimport OnigString from './OnigString'\n\nexport interface IOnigSearchResult extends IOnigCaptureIndex {\n    match: string\n}\n\nclass OnigRegExp {\n    private source: string\n    private scanner: OnigScanner\n    /**\n     * Create a new regex with the given pattern\n     * @param source A string pattern\n     */\n    constructor(source: string) {\n        this.source = source\n\n        try {\n            this.scanner = new OnigScanner([this.source])\n        } catch (error) {\n            // doesn't make much sense, but this to pass atom/node-oniguruam tests\n        }\n    }\n\n    /**\n     * Synchronously search the string for a match starting at the given position\n     * @param string The string to search\n     * @param startPosition The optional position to start the search at, defaults to `0`\n     */\n    public searchSync(string: string | OnigString, startPosition?: number): IOnigSearchResult[] {\n        let match\n        if (startPosition == null) {\n            startPosition = 0\n        }\n        match = this.scanner.findNextMatchSync(string, startPosition)\n        return this.captureIndicesForMatch(string, match)\n    }\n\n    /**\n     * Search the string for a match starting at the given position\n     * @param string The string to search\n     * @param startPosition The optional position to start the search at, defaults to `0`\n     * @param callback The `(error, match)` function to call when done, match will be null if no matches were found. match will be an array of objects for each matched group on a successful search\n     */\n    public search(string: string | OnigString, startPosition?: number, callback?: (error: any, match?: IOnigSearchResult[]) => void) {\n        if (startPosition == null) {\n            startPosition = 0\n        }\n        if (typeof startPosition === 'function') {\n            callback = startPosition\n            startPosition = 0\n        }\n        try {\n            const ret = this.searchSync(string, startPosition)\n            callback(null, ret)\n        } catch (error) {\n            callback(error)\n        }\n    }\n\n    /**\n     * Synchronously test if this regular expression matches the given string\n     * @param string The string to test against\n     */\n    public testSync(string: string | OnigString): boolean {\n        if ((typeof this.source === 'boolean' || typeof string === 'boolean')) {\n            return this.source === string\n        }\n        return this.searchSync(string) != null\n    }\n\n    /**\n     * Test if this regular expression matches the given string\n     * @param string The string to test against\n     * @param callback The (error, matches) function to call when done, matches will be true if at least one match is found, false otherwise\n     */\n    public test(string: string | OnigString, callback?: (error: any, matches?: boolean) => void) {\n        if (typeof callback !== 'function') {\n            callback = () => { }\n        }\n        try {\n            callback(null, this.testSync(string))\n        } catch (error) {\n            callback(error)\n        }\n    }\n\n    private captureIndicesForMatch(string: string | OnigString, match) {\n        if (match != null) {\n            const { captureIndices } = match\n            let capture\n            string = this.scanner.convertToString(string)\n            for (let i = 0; i < captureIndices.length; i++) {\n                capture = captureIndices[i]\n                capture.match = (string as string).slice(capture.start, capture.end)\n            }\n            return captureIndices\n        } else {\n            return null\n        }\n    }\n}\n\nexport default OnigRegExp\n", "import { loadWASM } from './onigasmH'\nimport OnigRegExp, { IOnigSearchResult } from './OnigRegExp'\nimport OnigScanner, { IOnigCaptureIndex } from './OnigScanner'\nimport OnigString from './OnigString'\n\nexport { loadWASM, OnigScanner, OnigRegExp, OnigString, IOnigCaptureIndex, IOnigSearchResult }\n", "/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nimport * as path from 'path';\nimport { RegexSource, mergeObjects } from './utils';\nimport { ILocation, IRawGrammar, IRawRepository, IRawRule, IRawCaptures } from './types';\nimport { OnigString, OnigScanner, IOnigCaptureIndex } from 'onigasm';\n\nconst HAS_BACK_REFERENCES = /\\\\(\\d+)/;\nconst BACK_REFERENCING_END = /\\\\(\\d+)/g;\n\nexport interface IRuleRegistry {\n\tgetRule(patternId: number): Rule;\n\tregisterRule<T extends Rule>(factory: (id: number) => T): T;\n}\n\nexport interface IGrammarRegistry {\n\tgetExternalGrammar(scopeName: string, repository: IRawRepository): IRawGrammar;\n}\n\nexport interface IRuleFactoryHelper extends IRuleRegistry, IGrammarRegistry {\n}\n\nexport interface ICompiledRule {\n\treadonly scanner: OnigScanner;\n\treadonly rules: number[];\n\treadonly debugRegExps: string[];\n}\n\nexport abstract class Rule {\n\n\tpublic readonly $location: ILocation;\n\tpublic readonly id: number;\n\n\tprivate readonly _nameIsCapturing: boolean;\n\tprivate readonly _name: string;\n\n\tprivate readonly _contentNameIsCapturing: boolean;\n\tprivate readonly _contentName: string;\n\n\tconstructor($location: ILocation, id: number, name: string, contentName: string) {\n\t\tthis.$location = $location;\n\t\tthis.id = id;\n\t\tthis._name = name || null;\n\t\tthis._nameIsCapturing = RegexSource.hasCaptures(this._name);\n\t\tthis._contentName = contentName || null;\n\t\tthis._contentNameIsCapturing = RegexSource.hasCaptures(this._contentName);\n\t}\n\n\tpublic get debugName(): string {\n\t\treturn `${(<any>this.constructor).name}#${this.id} @ ${path.basename(this.$location.filename)}:${this.$location.line}`;\n\t}\n\n\tpublic getName(lineText: string, captureIndices: IOnigCaptureIndex[]): string {\n\t\tif (!this._nameIsCapturing) {\n\t\t\treturn this._name;\n\t\t}\n\t\treturn RegexSource.replaceCaptures(this._name, lineText, captureIndices);\n\t}\n\n\tpublic getContentName(lineText: string, captureIndices: IOnigCaptureIndex[]): string {\n\t\tif (!this._contentNameIsCapturing) {\n\t\t\treturn this._contentName;\n\t\t}\n\t\treturn RegexSource.replaceCaptures(this._contentName, lineText, captureIndices);\n\t}\n\n\tpublic collectPatternsRecursive(grammar: IRuleRegistry, out: RegExpSourceList, isFirst: boolean) {\n\t\tthrow new Error('Implement me!');\n\t}\n\n\tpublic compile(grammar: IRuleRegistry, endRegexSource: string, allowA: boolean, allowG: boolean): ICompiledRule {\n\t\tthrow new Error('Implement me!');\n\t}\n}\n\nexport interface ICompilePatternsResult {\n\treadonly patterns: number[];\n\treadonly hasMissingPatterns: boolean;\n}\n\nexport class CaptureRule extends Rule {\n\n\tpublic readonly retokenizeCapturedWithRuleId: number;\n\n\tconstructor($location: ILocation, id: number, name: string, contentName: string, retokenizeCapturedWithRuleId: number) {\n\t\tsuper($location, id, name, contentName);\n\t\tthis.retokenizeCapturedWithRuleId = retokenizeCapturedWithRuleId;\n\t}\n}\n\ninterface IRegExpSourceAnchorCache {\n\treadonly A0_G0: string;\n\treadonly A0_G1: string;\n\treadonly A1_G0: string;\n\treadonly A1_G1: string;\n}\n\nexport class RegExpSource {\n\n\tpublic source: string;\n\tpublic readonly ruleId: number;\n\tpublic hasAnchor: boolean;\n\tpublic readonly hasBackReferences: boolean;\n\tprivate _anchorCache: IRegExpSourceAnchorCache;\n\n\tconstructor(regExpSource: string, ruleId: number, handleAnchors: boolean = true) {\n\t\tif (handleAnchors) {\n\t\t\tthis._handleAnchors(regExpSource);\n\t\t} else {\n\t\t\tthis.source = regExpSource;\n\t\t\tthis.hasAnchor = false;\n\t\t}\n\n\t\tif (this.hasAnchor) {\n\t\t\tthis._anchorCache = this._buildAnchorCache();\n\t\t}\n\n\t\tthis.ruleId = ruleId;\n\t\tthis.hasBackReferences = HAS_BACK_REFERENCES.test(this.source);\n\n\t\t// console.log('input: ' + regExpSource + ' => ' + this.source + ', ' + this.hasAnchor);\n\t}\n\n\tpublic clone(): RegExpSource {\n\t\treturn new RegExpSource(this.source, this.ruleId, true);\n\t}\n\n\tpublic setSource(newSource: string): void {\n\t\tif (this.source === newSource) {\n\t\t\treturn;\n\t\t}\n\t\tthis.source = newSource;\n\n\t\tif (this.hasAnchor) {\n\t\t\tthis._anchorCache = this._buildAnchorCache();\n\t\t}\n\t}\n\n\tprivate _handleAnchors(regExpSource: string): void {\n\t\tif (regExpSource) {\n\t\t\tlet pos: number,\n\t\t\t\tlen: number,\n\t\t\t\tch: string,\n\t\t\t\tnextCh: string,\n\t\t\t\tlastPushedPos = 0,\n\t\t\t\toutput: string[] = [];\n\n\t\t\tlet hasAnchor = false;\n\t\t\tfor (pos = 0, len = regExpSource.length; pos < len; pos++) {\n\t\t\t\tch = regExpSource.charAt(pos);\n\n\t\t\t\tif (ch === '\\\\') {\n\t\t\t\t\tif (pos + 1 < len) {\n\t\t\t\t\t\tnextCh = regExpSource.charAt(pos + 1);\n\t\t\t\t\t\tif (nextCh === 'z') {\n\t\t\t\t\t\t\toutput.push(regExpSource.substring(lastPushedPos, pos));\n\t\t\t\t\t\t\toutput.push('$(?!\\\\n)(?<!\\\\n)');\n\t\t\t\t\t\t\tlastPushedPos = pos + 2;\n\t\t\t\t\t\t} else if (nextCh === 'A' || nextCh === 'G') {\n\t\t\t\t\t\t\thasAnchor = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpos++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.hasAnchor = hasAnchor;\n\t\t\tif (lastPushedPos === 0) {\n\t\t\t\t// No \\z hit\n\t\t\t\tthis.source = regExpSource;\n\t\t\t} else {\n\t\t\t\toutput.push(regExpSource.substring(lastPushedPos, len));\n\t\t\t\tthis.source = output.join('');\n\t\t\t}\n\t\t} else {\n\t\t\tthis.hasAnchor = false;\n\t\t\tthis.source = regExpSource;\n\t\t}\n\t}\n\n\tpublic resolveBackReferences(lineText: string, captureIndices: IOnigCaptureIndex[]): string {\n\t\tlet capturedValues = captureIndices.map((capture) => {\n\t\t\treturn lineText.substring(capture.start, capture.end);\n\t\t});\n\t\tBACK_REFERENCING_END.lastIndex = 0;\n\t\treturn this.source.replace(BACK_REFERENCING_END, (match, g1) => {\n\t\t\treturn escapeRegExpCharacters(capturedValues[parseInt(g1, 10)] || '');\n\t\t});\n\t}\n\n\tprivate _buildAnchorCache(): IRegExpSourceAnchorCache {\n\t\tlet A0_G0_result: string[] = [];\n\t\tlet A0_G1_result: string[] = [];\n\t\tlet A1_G0_result: string[] = [];\n\t\tlet A1_G1_result: string[] = [];\n\n\t\tlet pos: number,\n\t\t\tlen: number,\n\t\t\tch: string,\n\t\t\tnextCh: string;\n\n\t\tfor (pos = 0, len = this.source.length; pos < len; pos++) {\n\t\t\tch = this.source.charAt(pos);\n\t\t\tA0_G0_result[pos] = ch;\n\t\t\tA0_G1_result[pos] = ch;\n\t\t\tA1_G0_result[pos] = ch;\n\t\t\tA1_G1_result[pos] = ch;\n\n\t\t\tif (ch === '\\\\') {\n\t\t\t\tif (pos + 1 < len) {\n\t\t\t\t\tnextCh = this.source.charAt(pos + 1);\n\t\t\t\t\tif (nextCh === 'A') {\n\t\t\t\t\t\tA0_G0_result[pos + 1] = '\\uFFFF';\n\t\t\t\t\t\tA0_G1_result[pos + 1] = '\\uFFFF';\n\t\t\t\t\t\tA1_G0_result[pos + 1] = 'A';\n\t\t\t\t\t\tA1_G1_result[pos + 1] = 'A';\n\t\t\t\t\t} else if (nextCh === 'G') {\n\t\t\t\t\t\tA0_G0_result[pos + 1] = '\\uFFFF';\n\t\t\t\t\t\tA0_G1_result[pos + 1] = 'G';\n\t\t\t\t\t\tA1_G0_result[pos + 1] = '\\uFFFF';\n\t\t\t\t\t\tA1_G1_result[pos + 1] = 'G';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tA0_G0_result[pos + 1] = nextCh;\n\t\t\t\t\t\tA0_G1_result[pos + 1] = nextCh;\n\t\t\t\t\t\tA1_G0_result[pos + 1] = nextCh;\n\t\t\t\t\t\tA1_G1_result[pos + 1] = nextCh;\n\t\t\t\t\t}\n\t\t\t\t\tpos++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tA0_G0: A0_G0_result.join(''),\n\t\t\tA0_G1: A0_G1_result.join(''),\n\t\t\tA1_G0: A1_G0_result.join(''),\n\t\t\tA1_G1: A1_G1_result.join('')\n\t\t};\n\t}\n\n\tpublic resolveAnchors(allowA: boolean, allowG: boolean): string {\n\t\tif (!this.hasAnchor) {\n\t\t\treturn this.source;\n\t\t}\n\n\t\tif (allowA) {\n\t\t\tif (allowG) {\n\t\t\t\treturn this._anchorCache.A1_G1;\n\t\t\t} else {\n\t\t\t\treturn this._anchorCache.A1_G0;\n\t\t\t}\n\t\t} else {\n\t\t\tif (allowG) {\n\t\t\t\treturn this._anchorCache.A0_G1;\n\t\t\t} else {\n\t\t\t\treturn this._anchorCache.A0_G0;\n\t\t\t}\n\t\t}\n\t}\n}\n\ninterface IRegExpSourceListAnchorCache {\n\tA0_G0: ICompiledRule;\n\tA0_G1: ICompiledRule;\n\tA1_G0: ICompiledRule;\n\tA1_G1: ICompiledRule;\n}\n\nfunction createOnigScanner(sources: string[]): OnigScanner {\n\treturn new OnigScanner(sources);\n}\n\nexport function createOnigString(sources: string): OnigString {\n\tvar r = new OnigString(sources);\n\t(<any>r).$str = sources;\n\treturn r;\n}\n\nexport function getString(str: OnigString): string {\n\treturn (<any>str).$str;\n}\n\nexport class RegExpSourceList {\n\n\tprivate readonly _items: RegExpSource[];\n\tprivate _hasAnchors: boolean;\n\tprivate _cached: ICompiledRule;\n\tprivate _anchorCache: IRegExpSourceListAnchorCache;\n\tprivate readonly _cachedSources: string[];\n\n\tconstructor() {\n\t\tthis._items = [];\n\t\tthis._hasAnchors = false;\n\t\tthis._cached = null;\n\t\tthis._cachedSources = null;\n\t\tthis._anchorCache = {\n\t\t\tA0_G0: null,\n\t\t\tA0_G1: null,\n\t\t\tA1_G0: null,\n\t\t\tA1_G1: null\n\t\t};\n\t}\n\n\tpublic push(item: RegExpSource): void {\n\t\tthis._items.push(item);\n\t\tthis._hasAnchors = this._hasAnchors || item.hasAnchor;\n\t}\n\n\tpublic unshift(item: RegExpSource): void {\n\t\tthis._items.unshift(item);\n\t\tthis._hasAnchors = this._hasAnchors || item.hasAnchor;\n\t}\n\n\tpublic length(): number {\n\t\treturn this._items.length;\n\t}\n\n\tpublic setSource(index: number, newSource: string): void {\n\t\tif (this._items[index].source !== newSource) {\n\t\t\t// bust the cache\n\t\t\tthis._cached = null;\n\t\t\tthis._anchorCache.A0_G0 = null;\n\t\t\tthis._anchorCache.A0_G1 = null;\n\t\t\tthis._anchorCache.A1_G0 = null;\n\t\t\tthis._anchorCache.A1_G1 = null;\n\t\t\tthis._items[index].setSource(newSource);\n\t\t}\n\t}\n\n\tpublic compile(grammar: IRuleRegistry, allowA: boolean, allowG: boolean): ICompiledRule {\n\t\tif (!this._hasAnchors) {\n\t\t\tif (!this._cached) {\n\t\t\t\tlet regExps = this._items.map(e => e.source);\n\t\t\t\tthis._cached = {\n\t\t\t\t\tscanner: createOnigScanner(regExps),\n\t\t\t\t\trules: this._items.map(e => e.ruleId),\n\t\t\t\t\tdebugRegExps: regExps\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn this._cached;\n\t\t} else {\n\t\t\tthis._anchorCache = {\n\t\t\t\tA0_G0: this._anchorCache.A0_G0 || (allowA === false && allowG === false ? this._resolveAnchors(allowA, allowG) : null),\n\t\t\t\tA0_G1: this._anchorCache.A0_G1 || (allowA === false && allowG === true ? this._resolveAnchors(allowA, allowG) : null),\n\t\t\t\tA1_G0: this._anchorCache.A1_G0 || (allowA === true && allowG === false ? this._resolveAnchors(allowA, allowG) : null),\n\t\t\t\tA1_G1: this._anchorCache.A1_G1 || (allowA === true && allowG === true ? this._resolveAnchors(allowA, allowG) : null),\n\t\t\t};\n\t\t\tif (allowA) {\n\t\t\t\tif (allowG) {\n\t\t\t\t\treturn this._anchorCache.A1_G1;\n\t\t\t\t} else {\n\t\t\t\t\treturn this._anchorCache.A1_G0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (allowG) {\n\t\t\t\t\treturn this._anchorCache.A0_G1;\n\t\t\t\t} else {\n\t\t\t\t\treturn this._anchorCache.A0_G0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\tprivate _resolveAnchors(allowA: boolean, allowG: boolean): ICompiledRule {\n\t\tlet regExps = this._items.map(e => e.resolveAnchors(allowA, allowG));\n\t\treturn {\n\t\t\tscanner: createOnigScanner(regExps),\n\t\t\trules: this._items.map(e => e.ruleId),\n\t\t\tdebugRegExps: regExps\n\t\t};\n\t}\n}\n\nexport class MatchRule extends Rule {\n\tprivate readonly _match: RegExpSource;\n\tpublic readonly captures: CaptureRule[];\n\tprivate _cachedCompiledPatterns: RegExpSourceList;\n\n\tconstructor($location: ILocation, id: number, name: string, match: string, captures: CaptureRule[]) {\n\t\tsuper($location, id, name, null);\n\t\tthis._match = new RegExpSource(match, this.id);\n\t\tthis.captures = captures;\n\t\tthis._cachedCompiledPatterns = null;\n\t}\n\n\tpublic get debugMatchRegExp(): string {\n\t\treturn `${this._match.source}`;\n\t}\n\n\tpublic collectPatternsRecursive(grammar: IRuleRegistry, out: RegExpSourceList, isFirst: boolean) {\n\t\tout.push(this._match);\n\t}\n\n\tpublic compile(grammar: IRuleRegistry, endRegexSource: string, allowA: boolean, allowG: boolean): ICompiledRule {\n\t\tif (!this._cachedCompiledPatterns) {\n\t\t\tthis._cachedCompiledPatterns = new RegExpSourceList();\n\t\t\tthis.collectPatternsRecursive(grammar, this._cachedCompiledPatterns, true);\n\t\t}\n\t\treturn this._cachedCompiledPatterns.compile(grammar, allowA, allowG);\n\t}\n}\n\nexport class IncludeOnlyRule extends Rule {\n\tpublic readonly hasMissingPatterns: boolean;\n\tpublic readonly patterns: number[];\n\tprivate _cachedCompiledPatterns: RegExpSourceList;\n\n\tconstructor($location: ILocation, id: number, name: string, contentName: string, patterns: ICompilePatternsResult) {\n\t\tsuper($location, id, name, contentName);\n\t\tthis.patterns = patterns.patterns;\n\t\tthis.hasMissingPatterns = patterns.hasMissingPatterns;\n\t\tthis._cachedCompiledPatterns = null;\n\t}\n\n\tpublic collectPatternsRecursive(grammar: IRuleRegistry, out: RegExpSourceList, isFirst: boolean) {\n\t\tlet i: number,\n\t\t\tlen: number,\n\t\t\trule: Rule;\n\n\t\tfor (i = 0, len = this.patterns.length; i < len; i++) {\n\t\t\trule = grammar.getRule(this.patterns[i]);\n\t\t\trule.collectPatternsRecursive(grammar, out, false);\n\t\t}\n\t}\n\n\tpublic compile(grammar: IRuleRegistry, endRegexSource: string, allowA: boolean, allowG: boolean): ICompiledRule {\n\t\tif (!this._cachedCompiledPatterns) {\n\t\t\tthis._cachedCompiledPatterns = new RegExpSourceList();\n\t\t\tthis.collectPatternsRecursive(grammar, this._cachedCompiledPatterns, true);\n\t\t}\n\t\treturn this._cachedCompiledPatterns.compile(grammar, allowA, allowG);\n\t}\n}\n\nfunction escapeRegExpCharacters(value: string): string {\n\treturn value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&');\n}\n\nexport class BeginEndRule extends Rule {\n\tprivate readonly _begin: RegExpSource;\n\tpublic readonly beginCaptures: CaptureRule[];\n\tprivate readonly _end: RegExpSource;\n\tpublic readonly endHasBackReferences: boolean;\n\tpublic readonly endCaptures: CaptureRule[];\n\tpublic readonly applyEndPatternLast: boolean;\n\tpublic readonly hasMissingPatterns: boolean;\n\tpublic readonly patterns: number[];\n\tprivate _cachedCompiledPatterns: RegExpSourceList;\n\n\tconstructor($location: ILocation, id: number, name: string, contentName: string, begin: string, beginCaptures: CaptureRule[], end: string, endCaptures: CaptureRule[], applyEndPatternLast: boolean, patterns: ICompilePatternsResult) {\n\t\tsuper($location, id, name, contentName);\n\t\tthis._begin = new RegExpSource(begin, this.id);\n\t\tthis.beginCaptures = beginCaptures;\n\t\tthis._end = new RegExpSource(end, -1);\n\t\tthis.endHasBackReferences = this._end.hasBackReferences;\n\t\tthis.endCaptures = endCaptures;\n\t\tthis.applyEndPatternLast = applyEndPatternLast || false;\n\t\tthis.patterns = patterns.patterns;\n\t\tthis.hasMissingPatterns = patterns.hasMissingPatterns;\n\t\tthis._cachedCompiledPatterns = null;\n\t}\n\n\tpublic get debugBeginRegExp(): string {\n\t\treturn `${this._begin.source}`;\n\t}\n\n\tpublic get debugEndRegExp(): string {\n\t\treturn `${this._end.source}`;\n\t}\n\n\tpublic getEndWithResolvedBackReferences(lineText: string, captureIndices: IOnigCaptureIndex[]): string {\n\t\treturn this._end.resolveBackReferences(lineText, captureIndices);\n\t}\n\n\tpublic collectPatternsRecursive(grammar: IRuleRegistry, out: RegExpSourceList, isFirst: boolean) {\n\t\tif (isFirst) {\n\t\t\tlet i: number,\n\t\t\t\tlen: number,\n\t\t\t\trule: Rule;\n\n\t\t\tfor (i = 0, len = this.patterns.length; i < len; i++) {\n\t\t\t\trule = grammar.getRule(this.patterns[i]);\n\t\t\t\trule.collectPatternsRecursive(grammar, out, false);\n\t\t\t}\n\t\t} else {\n\t\t\tout.push(this._begin);\n\t\t}\n\t}\n\n\tpublic compile(grammar: IRuleRegistry, endRegexSource: string, allowA: boolean, allowG: boolean): ICompiledRule {\n\t\tlet precompiled = this._precompile(grammar);\n\n\t\tif (this._end.hasBackReferences) {\n\t\t\tif (this.applyEndPatternLast) {\n\t\t\t\tprecompiled.setSource(precompiled.length() - 1, endRegexSource);\n\t\t\t} else {\n\t\t\t\tprecompiled.setSource(0, endRegexSource);\n\t\t\t}\n\t\t}\n\t\treturn this._cachedCompiledPatterns.compile(grammar, allowA, allowG);\n\t}\n\n\tprivate _precompile(grammar: IRuleRegistry): RegExpSourceList {\n\t\tif (!this._cachedCompiledPatterns) {\n\t\t\tthis._cachedCompiledPatterns = new RegExpSourceList();\n\n\t\t\tthis.collectPatternsRecursive(grammar, this._cachedCompiledPatterns, true);\n\n\t\t\tif (this.applyEndPatternLast) {\n\t\t\t\tthis._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end);\n\t\t\t} else {\n\t\t\t\tthis._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end);\n\t\t\t}\n\t\t}\n\t\treturn this._cachedCompiledPatterns;\n\t}\n}\n\nexport class BeginWhileRule extends Rule {\n\tprivate readonly _begin: RegExpSource;\n\tpublic readonly beginCaptures: CaptureRule[];\n\tpublic readonly whileCaptures: CaptureRule[];\n\tprivate readonly _while: RegExpSource;\n\tpublic readonly whileHasBackReferences: boolean;\n\tpublic readonly hasMissingPatterns: boolean;\n\tpublic readonly patterns: number[];\n\tprivate _cachedCompiledPatterns: RegExpSourceList;\n\tprivate _cachedCompiledWhilePatterns: RegExpSourceList;\n\n\tconstructor($location: ILocation, id: number, name: string, contentName: string, begin: string, beginCaptures: CaptureRule[], _while: string, whileCaptures: CaptureRule[], patterns: ICompilePatternsResult) {\n\t\tsuper($location, id, name, contentName);\n\t\tthis._begin = new RegExpSource(begin, this.id);\n\t\tthis.beginCaptures = beginCaptures;\n\t\tthis.whileCaptures = whileCaptures;\n\t\tthis._while = new RegExpSource(_while, -2);\n\t\tthis.whileHasBackReferences = this._while.hasBackReferences;\n\t\tthis.patterns = patterns.patterns;\n\t\tthis.hasMissingPatterns = patterns.hasMissingPatterns;\n\t\tthis._cachedCompiledPatterns = null;\n\t\tthis._cachedCompiledWhilePatterns = null;\n\t}\n\n\tpublic getWhileWithResolvedBackReferences(lineText: string, captureIndices: IOnigCaptureIndex[]): string {\n\t\treturn this._while.resolveBackReferences(lineText, captureIndices);\n\t}\n\n\tpublic collectPatternsRecursive(grammar: IRuleRegistry, out: RegExpSourceList, isFirst: boolean) {\n\t\tif (isFirst) {\n\t\t\tlet i: number,\n\t\t\t\tlen: number,\n\t\t\t\trule: Rule;\n\n\t\t\tfor (i = 0, len = this.patterns.length; i < len; i++) {\n\t\t\t\trule = grammar.getRule(this.patterns[i]);\n\t\t\t\trule.collectPatternsRecursive(grammar, out, false);\n\t\t\t}\n\t\t} else {\n\t\t\tout.push(this._begin);\n\t\t}\n\t}\n\n\tpublic compile(grammar: IRuleRegistry, endRegexSource: string, allowA: boolean, allowG: boolean): ICompiledRule {\n\t\tthis._precompile(grammar);\n\t\treturn this._cachedCompiledPatterns.compile(grammar, allowA, allowG);\n\t}\n\n\tprivate _precompile(grammar: IRuleRegistry): void {\n\t\tif (!this._cachedCompiledPatterns) {\n\t\t\tthis._cachedCompiledPatterns = new RegExpSourceList();\n\t\t\tthis.collectPatternsRecursive(grammar, this._cachedCompiledPatterns, true);\n\t\t}\n\t}\n\n\n\tpublic compileWhile(grammar: IRuleRegistry, endRegexSource: string, allowA: boolean, allowG: boolean): ICompiledRule {\n\t\tthis._precompileWhile(grammar);\n\t\tif (this._while.hasBackReferences) {\n\t\t\tthis._cachedCompiledWhilePatterns.setSource(0, endRegexSource);\n\t\t}\n\t\treturn this._cachedCompiledWhilePatterns.compile(grammar, allowA, allowG);\n\t}\n\n\n\tprivate _precompileWhile(grammar: IRuleRegistry): void {\n\t\tif (!this._cachedCompiledWhilePatterns) {\n\t\t\tthis._cachedCompiledWhilePatterns = new RegExpSourceList();\n\t\t\tthis._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while);\n\t\t}\n\t}\n}\n\nexport class RuleFactory {\n\n\tpublic static createCaptureRule(helper: IRuleFactoryHelper, $location: ILocation, name: string, contentName: string, retokenizeCapturedWithRuleId: number): CaptureRule {\n\t\treturn helper.registerRule((id) => {\n\t\t\treturn new CaptureRule($location, id, name, contentName, retokenizeCapturedWithRuleId);\n\t\t});\n\t}\n\n\tpublic static getCompiledRuleId(desc: IRawRule, helper: IRuleFactoryHelper, repository: IRawRepository): number {\n\t\tif (!desc.id) {\n\t\t\thelper.registerRule((id) => {\n\t\t\t\tdesc.id = id;\n\n\t\t\t\tif (desc.match) {\n\t\t\t\t\treturn new MatchRule(\n\t\t\t\t\t\tdesc.$vscodeTextmateLocation,\n\t\t\t\t\t\tdesc.id,\n\t\t\t\t\t\tdesc.name,\n\t\t\t\t\t\tdesc.match,\n\t\t\t\t\t\tRuleFactory._compileCaptures(desc.captures, helper, repository)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!desc.begin) {\n\t\t\t\t\tif (desc.repository) {\n\t\t\t\t\t\trepository = mergeObjects({}, repository, desc.repository);\n\t\t\t\t\t}\n\t\t\t\t\treturn new IncludeOnlyRule(\n\t\t\t\t\t\tdesc.$vscodeTextmateLocation,\n\t\t\t\t\t\tdesc.id,\n\t\t\t\t\t\tdesc.name,\n\t\t\t\t\t\tdesc.contentName,\n\t\t\t\t\t\tRuleFactory._compilePatterns(desc.patterns, helper, repository)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (desc.while) {\n\t\t\t\t\treturn new BeginWhileRule(\n\t\t\t\t\t\tdesc.$vscodeTextmateLocation,\n\t\t\t\t\t\tdesc.id,\n\t\t\t\t\t\tdesc.name,\n\t\t\t\t\t\tdesc.contentName,\n\t\t\t\t\t\tdesc.begin, RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n\t\t\t\t\t\tdesc.while, RuleFactory._compileCaptures(desc.whileCaptures || desc.captures, helper, repository),\n\t\t\t\t\t\tRuleFactory._compilePatterns(desc.patterns, helper, repository)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn new BeginEndRule(\n\t\t\t\t\tdesc.$vscodeTextmateLocation,\n\t\t\t\t\tdesc.id,\n\t\t\t\t\tdesc.name,\n\t\t\t\t\tdesc.contentName,\n\t\t\t\t\tdesc.begin, RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n\t\t\t\t\tdesc.end, RuleFactory._compileCaptures(desc.endCaptures || desc.captures, helper, repository),\n\t\t\t\t\tdesc.applyEndPatternLast,\n\t\t\t\t\tRuleFactory._compilePatterns(desc.patterns, helper, repository)\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\treturn desc.id;\n\t}\n\n\tprivate static _compileCaptures(captures: IRawCaptures, helper: IRuleFactoryHelper, repository: IRawRepository): CaptureRule[] {\n\t\tlet r: CaptureRule[] = [],\n\t\t\tnumericCaptureId: number,\n\t\t\tmaximumCaptureId: number,\n\t\t\ti: number,\n\t\t\tcaptureId: string;\n\n\t\tif (captures) {\n\t\t\t// Find the maximum capture id\n\t\t\tmaximumCaptureId = 0;\n\t\t\tfor (captureId in captures) {\n\t\t\t\tif (captureId === '$vscodeTextmateLocation') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tnumericCaptureId = parseInt(captureId, 10);\n\t\t\t\tif (numericCaptureId > maximumCaptureId) {\n\t\t\t\t\tmaximumCaptureId = numericCaptureId;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Initialize result\n\t\t\tfor (i = 0; i <= maximumCaptureId; i++) {\n\t\t\t\tr[i] = null;\n\t\t\t}\n\n\t\t\t// Fill out result\n\t\t\tfor (captureId in captures) {\n\t\t\t\tif (captureId === '$vscodeTextmateLocation') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tnumericCaptureId = parseInt(captureId, 10);\n\t\t\t\tlet retokenizeCapturedWithRuleId = 0;\n\t\t\t\tif (captures[captureId].patterns) {\n\t\t\t\t\tretokenizeCapturedWithRuleId = RuleFactory.getCompiledRuleId(captures[captureId], helper, repository);\n\t\t\t\t}\n\t\t\t\tr[numericCaptureId] = RuleFactory.createCaptureRule(helper, captures[captureId].$vscodeTextmateLocation, captures[captureId].name, captures[captureId].contentName, retokenizeCapturedWithRuleId);\n\t\t\t}\n\t\t}\n\n\t\treturn r;\n\t}\n\n\tprivate static _compilePatterns(patterns: IRawRule[], helper: IRuleFactoryHelper, repository: IRawRepository): ICompilePatternsResult {\n\t\tlet r: number[] = [],\n\t\t\tpattern: IRawRule,\n\t\t\ti: number,\n\t\t\tlen: number,\n\t\t\tpatternId: number,\n\t\t\texternalGrammar: IRawGrammar,\n\t\t\trule: Rule,\n\t\t\tskipRule: boolean;\n\n\t\tif (patterns) {\n\t\t\tfor (i = 0, len = patterns.length; i < len; i++) {\n\t\t\t\tpattern = patterns[i];\n\t\t\t\tpatternId = -1;\n\n\t\t\t\tif (pattern.include) {\n\t\t\t\t\tif (pattern.include.charAt(0) === '#') {\n\t\t\t\t\t\t// Local include found in `repository`\n\t\t\t\t\t\tlet localIncludedRule = repository[pattern.include.substr(1)];\n\t\t\t\t\t\tif (localIncludedRule) {\n\t\t\t\t\t\t\tpatternId = RuleFactory.getCompiledRuleId(localIncludedRule, helper, repository);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// console.warn('CANNOT find rule for scopeName: ' + pattern.include + ', I am: ', repository['$base'].name);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (pattern.include === '$base' || pattern.include === '$self') {\n\t\t\t\t\t\t// Special include also found in `repository`\n\t\t\t\t\t\tpatternId = RuleFactory.getCompiledRuleId(repository[pattern.include], helper, repository);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet externalGrammarName: string = null,\n\t\t\t\t\t\t\texternalGrammarInclude: string = null,\n\t\t\t\t\t\t\tsharpIndex = pattern.include.indexOf('#');\n\t\t\t\t\t\tif (sharpIndex >= 0) {\n\t\t\t\t\t\t\texternalGrammarName = pattern.include.substring(0, sharpIndex);\n\t\t\t\t\t\t\texternalGrammarInclude = pattern.include.substring(sharpIndex + 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\texternalGrammarName = pattern.include;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// External include\n\t\t\t\t\t\texternalGrammar = helper.getExternalGrammar(externalGrammarName, repository);\n\n\t\t\t\t\t\tif (externalGrammar) {\n\t\t\t\t\t\t\tif (externalGrammarInclude) {\n\t\t\t\t\t\t\t\tlet externalIncludedRule = externalGrammar.repository[externalGrammarInclude];\n\t\t\t\t\t\t\t\tif (externalIncludedRule) {\n\t\t\t\t\t\t\t\t\tpatternId = RuleFactory.getCompiledRuleId(externalIncludedRule, helper, externalGrammar.repository);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// console.warn('CANNOT find rule for scopeName: ' + pattern.include + ', I am: ', repository['$base'].name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpatternId = RuleFactory.getCompiledRuleId(externalGrammar.repository.$self, helper, externalGrammar.repository);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// console.warn('CANNOT find grammar for scopeName: ' + pattern.include + ', I am: ', repository['$base'].name);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tpatternId = RuleFactory.getCompiledRuleId(pattern, helper, repository);\n\t\t\t\t}\n\n\t\t\t\tif (patternId !== -1) {\n\t\t\t\t\trule = helper.getRule(patternId);\n\n\t\t\t\t\tskipRule = false;\n\n\t\t\t\t\tif (rule instanceof IncludeOnlyRule || rule instanceof BeginEndRule || rule instanceof BeginWhileRule) {\n\t\t\t\t\t\tif (rule.hasMissingPatterns && rule.patterns.length === 0) {\n\t\t\t\t\t\t\tskipRule = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (skipRule) {\n\t\t\t\t\t\t// console.log('REMOVING RULE ENTIRELY DUE TO EMPTY PATTERNS THAT ARE MISSING');\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tr.push(patternId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tpatterns: r,\n\t\t\thasMissingPatterns: ((patterns ? patterns.length : 0) !== r.length)\n\t\t};\n\t}\n}\n", "/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nexport interface MatcherWithPriority<T> {\n\tmatcher: Matcher<T>;\n\tpriority: -1 | 0 | 1;\n}\n\nexport interface Matcher<T> {\n\t(matcherInput: T): boolean;\n}\n\nexport function createMatchers<T>(selector: string, matchesName: (names: string[], matcherInput: T) => boolean): MatcherWithPriority<T>[] {\n\tvar results = <MatcherWithPriority<T>[]> [];\n\tvar tokenizer = newTokenizer(selector);\n\tvar token = tokenizer.next();\n\twhile (token !== null) {\n\t\tlet priority : -1 | 0 | 1 = 0;\n\t\tif (token.length === 2 && token.charAt(1) === ':') {\n\t\t\tswitch (token.charAt(0)) {\n\t\t\t\tcase 'R': priority = 1; break;\n\t\t\t\tcase 'L': priority = -1; break;\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.log(`Unknown priority ${token} in scope selector`);\n\t\t\t}\n\t\t\ttoken = tokenizer.next();\n\t\t}\n\t\tlet matcher = parseConjunction();\n\t\tif (matcher) {\n\t\t\tresults.push({ matcher, priority });\n\t\t}\n\t\tif (token !== ',') {\n\t\t\tbreak;\n\t\t}\n\t\ttoken = tokenizer.next();\n\t}\n\treturn results;\n\n\tfunction parseOperand(): Matcher<T> {\n\t\tif (token === '-') {\n\t\t\ttoken = tokenizer.next();\n\t\t\tvar expressionToNegate = parseOperand();\n\t\t\treturn matcherInput => expressionToNegate && !expressionToNegate(matcherInput);\n\t\t}\n\t\tif (token === '(') {\n\t\t\ttoken = tokenizer.next();\n\t\t\tvar expressionInParents = parseInnerExpression();\n\t\t\tif (token === ')') {\n\t\t\t\ttoken = tokenizer.next();\n\t\t\t}\n\t\t\treturn expressionInParents;\n\t\t}\n\t\tif (isIdentifier(token)) {\n\t\t\tvar identifiers: string[] = [];\n\t\t\tdo {\n\t\t\t\tidentifiers.push(token);\n\t\t\t\ttoken = tokenizer.next();\n\t\t\t} while (isIdentifier(token));\n\t\t\treturn matcherInput => matchesName(identifiers, matcherInput);\n\t\t}\n\t\treturn null;\n\t}\n\tfunction parseConjunction(): Matcher<T> {\n\t\tvar matchers: Matcher<T>[] = [];\n\t\tvar matcher = parseOperand();\n\t\twhile (matcher) {\n\t\t\tmatchers.push(matcher);\n\t\t\tmatcher = parseOperand();\n\t\t}\n\t\treturn matcherInput => matchers.every(matcher => matcher(matcherInput)); // and\n\t}\n\tfunction parseInnerExpression(): Matcher<T> {\n\t\tvar matchers: Matcher<T>[] = [];\n\t\tvar matcher = parseConjunction();\n\t\twhile (matcher) {\n\t\t\tmatchers.push(matcher);\n\t\t\tif (token === '|' || token === ',') {\n\t\t\t\tdo {\n\t\t\t\t\ttoken = tokenizer.next();\n\t\t\t\t} while (token === '|' || token === ','); // ignore subsequent commas\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatcher = parseConjunction();\n\t\t}\n\t\treturn matcherInput => matchers.some(matcher => matcher(matcherInput)); // or\n\t}\n}\n\nfunction isIdentifier(token: string) {\n\treturn token && token.match(/[\\w\\.:]+/);\n}\n\nfunction newTokenizer(input: string): { next: () => string } {\n\tlet regex = /([LR]:|[\\w\\.:][\\w\\.:\\-]*|[\\,\\|\\-\\(\\)])/g;\n\tvar match = regex.exec(input);\n\treturn {\n\t\tnext: () => {\n\t\t\tif (!match) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar res = match[0];\n\t\t\tmatch = regex.exec(input);\n\t\t\treturn res;\n\t\t}\n\t};\n}\n", "/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nexport const CAPTURE_METADATA = typeof process === 'undefined' ? false : !!process.env['VSCODE_TEXTMATE_DEBUG'];\nexport const IN_DEBUG_MODE = typeof process === 'undefined' ? false : !!process.env['VSCODE_TEXTMATE_DEBUG'];\n", "/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nimport { clone } from './utils';\nimport { IRawGrammar, IRawRepository, IRawRule } from './types';\nimport { IRuleRegistry, IRuleFactoryHelper, RuleFactory, Rule, CaptureRule, BeginEndRule, BeginWhileRule, MatchRule, ICompiledRule, createOnigString, getString } from './rule';\nimport { IOnigCaptureIndex, OnigString } from 'onigasm';\nimport { createMatchers, Matcher } from './matcher';\nimport { MetadataConsts, IGrammar, ITokenizeLineResult, ITokenizeLineResult2, IToken, IEmbeddedLanguagesMap, StandardTokenType, StackElement as StackElementDef, ITokenTypeMap } from './main';\nimport { IN_DEBUG_MODE } from './debug';\nimport { FontStyle, ThemeTrieElementRule } from './theme';\n\nexport const enum TemporaryStandardTokenType {\n\tOther = 0,\n\tComment = 1,\n\tString = 2,\n\tRegEx = 4,\n\tMetaEmbedded = 8\n}\n\nexport function createGrammar(grammar: IRawGrammar, initialLanguage: number, embeddedLanguages: IEmbeddedLanguagesMap, tokenTypes: ITokenTypeMap, grammarRepository: IGrammarRepository & IThemeProvider): Grammar {\n\treturn new Grammar(grammar, initialLanguage, embeddedLanguages, tokenTypes, grammarRepository);\n}\n\nexport interface IThemeProvider {\n\tthemeMatch(scopeName: string): ThemeTrieElementRule[];\n\tgetDefaults(): ThemeTrieElementRule;\n}\n\nexport interface IGrammarRepository {\n\tlookup(scopeName: string): IRawGrammar;\n\tinjections(scopeName: string): string[];\n}\n\nexport interface IScopeNameSet {\n\t[scopeName: string]: boolean;\n}\n\n/**\n * Fill in `result` all external included scopes in `patterns`\n */\nfunction _extractIncludedScopesInPatterns(result: IScopeNameSet, patterns: IRawRule[]): void {\n\tfor (let i = 0, len = patterns.length; i < len; i++) {\n\n\t\tif (Array.isArray(patterns[i].patterns)) {\n\t\t\t_extractIncludedScopesInPatterns(result, patterns[i].patterns);\n\t\t}\n\n\t\tlet include = patterns[i].include;\n\n\t\tif (!include) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (include === '$base' || include === '$self') {\n\t\t\t// Special includes that can be resolved locally in this grammar\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (include.charAt(0) === '#') {\n\t\t\t// Local include from this grammar\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet sharpIndex = include.indexOf('#');\n\t\tif (sharpIndex >= 0) {\n\t\t\tresult[include.substring(0, sharpIndex)] = true;\n\t\t} else {\n\t\t\tresult[include] = true;\n\t\t}\n\t}\n}\n\n/**\n * Fill in `result` all external included scopes in `repository`\n */\nfunction _extractIncludedScopesInRepository(result: IScopeNameSet, repository: IRawRepository): void {\n\tfor (let name in repository) {\n\t\tlet rule = repository[name];\n\n\t\tif (rule.patterns && Array.isArray(rule.patterns)) {\n\t\t\t_extractIncludedScopesInPatterns(result, rule.patterns);\n\t\t}\n\n\t\tif (rule.repository) {\n\t\t\t_extractIncludedScopesInRepository(result, rule.repository);\n\t\t}\n\t}\n}\n\n/**\n * Collects the list of all external included scopes in `grammar`.\n */\nexport function collectIncludedScopes(result: IScopeNameSet, grammar: IRawGrammar): void {\n\tif (grammar.patterns && Array.isArray(grammar.patterns)) {\n\t\t_extractIncludedScopesInPatterns(result, grammar.patterns);\n\t}\n\n\tif (grammar.repository) {\n\t\t_extractIncludedScopesInRepository(result, grammar.repository);\n\t}\n\n\t// remove references to own scope (avoid recursion)\n\tdelete result[grammar.scopeName];\n}\n\nexport interface Injection {\n\treadonly matcher: Matcher<string[]>;\n\treadonly priority: -1 | 0 | 1; // 0 is the default. -1 for 'L' and 1 for 'R'\n\treadonly ruleId: number;\n\treadonly grammar: IRawGrammar;\n}\n\nfunction scopesAreMatching(thisScopeName: string, scopeName: string): boolean {\n\tif (!thisScopeName) {\n\t\treturn false;\n\t}\n\tif (thisScopeName === scopeName) {\n\t\treturn true;\n\t}\n\tvar len = scopeName.length;\n\treturn thisScopeName.length > len && thisScopeName.substr(0, len) === scopeName && thisScopeName[len] === '.';\n}\n\nfunction nameMatcher(identifers: string[], scopes: string[]) {\n\tif (scopes.length < identifers.length) {\n\t\treturn false;\n\t}\n\tvar lastIndex = 0;\n\treturn identifers.every(identifier => {\n\t\tfor (var i = lastIndex; i < scopes.length; i++) {\n\t\t\tif (scopesAreMatching(scopes[i], identifier)) {\n\t\t\t\tlastIndex = i + 1;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t});\n};\n\nfunction collectInjections(result: Injection[], selector: string, rule: IRawRule, ruleFactoryHelper: IRuleFactoryHelper, grammar: IRawGrammar): void {\n\tlet matchers = createMatchers(selector, nameMatcher);\n\tlet ruleId = RuleFactory.getCompiledRuleId(rule, ruleFactoryHelper, grammar.repository);\n\tfor (let matcher of matchers) {\n\t\tresult.push({\n\t\t\tmatcher: matcher.matcher,\n\t\t\truleId: ruleId,\n\t\t\tgrammar: grammar,\n\t\t\tpriority: matcher.priority\n\t\t});\n\t}\n}\n\nexport class ScopeMetadata {\n\tpublic readonly scopeName: string;\n\tpublic readonly languageId: number;\n\tpublic readonly tokenType: TemporaryStandardTokenType;\n\tpublic readonly themeData: ThemeTrieElementRule[];\n\n\tconstructor(scopeName: string, languageId: number, tokenType: TemporaryStandardTokenType, themeData: ThemeTrieElementRule[]) {\n\t\tthis.scopeName = scopeName;\n\t\tthis.languageId = languageId;\n\t\tthis.tokenType = tokenType;\n\t\tthis.themeData = themeData;\n\t}\n}\n\nclass ScopeMetadataProvider {\n\n\tprivate readonly _initialLanguage: number;\n\tprivate readonly _themeProvider: IThemeProvider;\n\tprivate _cache: { [scopeName: string]: ScopeMetadata; };\n\tprivate _defaultMetaData: ScopeMetadata;\n\tprivate readonly _embeddedLanguages: IEmbeddedLanguagesMap;\n\tprivate readonly _embeddedLanguagesRegex: RegExp;\n\n\tconstructor(initialLanguage: number, themeProvider: IThemeProvider, embeddedLanguages: IEmbeddedLanguagesMap) {\n\t\tthis._initialLanguage = initialLanguage;\n\t\tthis._themeProvider = themeProvider;\n\t\tthis.onDidChangeTheme();\n\n\t\t// embeddedLanguages handling\n\t\tthis._embeddedLanguages = Object.create(null);\n\n\t\tif (embeddedLanguages) {\n\t\t\t// If embeddedLanguages are configured, fill in `this._embeddedLanguages`\n\t\t\tlet scopes = Object.keys(embeddedLanguages);\n\t\t\tfor (let i = 0, len = scopes.length; i < len; i++) {\n\t\t\t\tlet scope = scopes[i];\n\t\t\t\tlet language = embeddedLanguages[scope];\n\t\t\t\tif (typeof language !== 'number' || language === 0) {\n\t\t\t\t\tconsole.warn('Invalid embedded language found at scope ' + scope + ': <<' + language + '>>');\n\t\t\t\t\t// never hurts to be too careful\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthis._embeddedLanguages[scope] = language;\n\t\t\t}\n\t\t}\n\n\t\t// create the regex\n\t\tlet escapedScopes = Object.keys(this._embeddedLanguages).map((scopeName) => ScopeMetadataProvider._escapeRegExpCharacters(scopeName));\n\t\tif (escapedScopes.length === 0) {\n\t\t\t// no scopes registered\n\t\t\tthis._embeddedLanguagesRegex = null;\n\t\t} else {\n\t\t\tescapedScopes.sort();\n\t\t\tescapedScopes.reverse();\n\t\t\tthis._embeddedLanguagesRegex = new RegExp(`^((${escapedScopes.join(')|(')}))($|\\\\.)`, '');\n\t\t}\n\t}\n\n\tpublic onDidChangeTheme(): void {\n\t\tthis._cache = Object.create(null);\n\t\tthis._defaultMetaData = new ScopeMetadata(\n\t\t\t'',\n\t\t\tthis._initialLanguage,\n\t\t\tTemporaryStandardTokenType.Other,\n\t\t\t[this._themeProvider.getDefaults()]\n\t\t);\n\t}\n\n\tpublic getDefaultMetadata(): ScopeMetadata {\n\t\treturn this._defaultMetaData;\n\t}\n\n\t/**\n\t * Escapes regular expression characters in a given string\n\t */\n\tprivate static _escapeRegExpCharacters(value: string): string {\n\t\treturn value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&');\n\t}\n\n\tprivate static _NULL_SCOPE_METADATA = new ScopeMetadata('', 0, 0, null);\n\tpublic getMetadataForScope(scopeName: string): ScopeMetadata {\n\t\tif (scopeName === null) {\n\t\t\treturn ScopeMetadataProvider._NULL_SCOPE_METADATA;\n\t\t}\n\t\tlet value = this._cache[scopeName];\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t\tvalue = this._doGetMetadataForScope(scopeName);\n\t\tthis._cache[scopeName] = value;\n\t\treturn value;\n\t}\n\n\tprivate _doGetMetadataForScope(scopeName: string): ScopeMetadata {\n\t\tlet languageId = this._scopeToLanguage(scopeName);\n\t\tlet standardTokenType = this._toStandardTokenType(scopeName);\n\t\tlet themeData = this._themeProvider.themeMatch(scopeName);\n\n\t\treturn new ScopeMetadata(scopeName, languageId, standardTokenType, themeData);\n\t}\n\n\t/**\n\t * Given a produced TM scope, return the language that token describes or null if unknown.\n\t * e.g. source.html => html, source.css.embedded.html => css, punctuation.definition.tag.html => null\n\t */\n\tprivate _scopeToLanguage(scope: string): number {\n\t\tif (!scope) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (!this._embeddedLanguagesRegex) {\n\t\t\t// no scopes registered\n\t\t\treturn 0;\n\t\t}\n\t\tlet m = scope.match(this._embeddedLanguagesRegex);\n\t\tif (!m) {\n\t\t\t// no scopes matched\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet language = this._embeddedLanguages[m[1]] || 0;\n\t\tif (!language) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn language;\n\t}\n\n\tprivate static STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|meta\\.embedded)\\b/;\n\tprivate _toStandardTokenType(tokenType: string): TemporaryStandardTokenType {\n\t\tlet m = tokenType.match(ScopeMetadataProvider.STANDARD_TOKEN_TYPE_REGEXP);\n\t\tif (!m) {\n\t\t\treturn TemporaryStandardTokenType.Other;\n\t\t}\n\t\tswitch (m[1]) {\n\t\t\tcase 'comment':\n\t\t\t\treturn TemporaryStandardTokenType.Comment;\n\t\t\tcase 'string':\n\t\t\t\treturn TemporaryStandardTokenType.String;\n\t\t\tcase 'regex':\n\t\t\t\treturn TemporaryStandardTokenType.RegEx;\n\t\t\tcase 'meta.embedded':\n\t\t\t\treturn TemporaryStandardTokenType.MetaEmbedded;\n\t\t}\n\t\tthrow new Error('Unexpected match for standard token type!');\n\t}\n}\n\nexport class Grammar implements IGrammar, IRuleFactoryHelper {\n\n\tprivate _rootId: number;\n\tprivate _lastRuleId: number;\n\tprivate readonly _ruleId2desc: Rule[];\n\tprivate readonly _includedGrammars: { [scopeName: string]: IRawGrammar; };\n\tprivate readonly _grammarRepository: IGrammarRepository;\n\tprivate readonly _grammar: IRawGrammar;\n\tprivate _injections: Injection[];\n\tprivate readonly _scopeMetadataProvider: ScopeMetadataProvider;\n\tprivate readonly _tokenTypeMatchers: TokenTypeMatcher[];\n\n\tconstructor(grammar: IRawGrammar, initialLanguage: number, embeddedLanguages: IEmbeddedLanguagesMap, tokenTypes: ITokenTypeMap, grammarRepository: IGrammarRepository & IThemeProvider) {\n\t\tthis._scopeMetadataProvider = new ScopeMetadataProvider(initialLanguage, grammarRepository, embeddedLanguages);\n\n\t\tthis._rootId = -1;\n\t\tthis._lastRuleId = 0;\n\t\tthis._ruleId2desc = [];\n\t\tthis._includedGrammars = {};\n\t\tthis._grammarRepository = grammarRepository;\n\t\tthis._grammar = initGrammar(grammar, null);\n\n\t\tthis._tokenTypeMatchers = [];\n\t\tif (tokenTypes) {\n\t\t\tfor (const selector of Object.keys(tokenTypes)) {\n\t\t\t\tconst matchers = createMatchers(selector, nameMatcher);\n\t\t\t\tfor (const matcher of matchers) {\n\t\t\t\t\tthis._tokenTypeMatchers.push({\n\t\t\t\t\t\tmatcher: matcher.matcher,\n\t\t\t\t\t\ttype: tokenTypes[selector]\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic onDidChangeTheme(): void {\n\t\tthis._scopeMetadataProvider.onDidChangeTheme();\n\t}\n\n\tpublic getMetadataForScope(scope: string): ScopeMetadata {\n\t\treturn this._scopeMetadataProvider.getMetadataForScope(scope);\n\t}\n\n\tpublic getInjections(): Injection[] {\n\t\tif (!this._injections) {\n\t\t\tthis._injections = [];\n\t\t\t// add injections from the current grammar\n\t\t\tvar rawInjections = this._grammar.injections;\n\t\t\tif (rawInjections) {\n\t\t\t\tfor (var expression in rawInjections) {\n\t\t\t\t\tcollectInjections(this._injections, expression, rawInjections[expression], this, this._grammar);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// add injection grammars contributed for the current scope\n\t\t\tif (this._grammarRepository) {\n\t\t\t\tlet injectionScopeNames = this._grammarRepository.injections(this._grammar.scopeName);\n\t\t\t\tif (injectionScopeNames) {\n\t\t\t\t\tinjectionScopeNames.forEach(injectionScopeName => {\n\t\t\t\t\t\tlet injectionGrammar = this.getExternalGrammar(injectionScopeName);\n\t\t\t\t\t\tif (injectionGrammar) {\n\t\t\t\t\t\t\tlet selector = injectionGrammar.injectionSelector;\n\t\t\t\t\t\t\tif (selector) {\n\t\t\t\t\t\t\t\tcollectInjections(this._injections, selector, injectionGrammar, this, injectionGrammar);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._injections.sort((i1, i2) => i1.priority - i2.priority); // sort by priority\n\t\t}\n\t\tif (this._injections.length === 0) {\n\t\t\treturn this._injections;\n\t\t}\n\t\treturn this._injections;\n\t}\n\n\tpublic registerRule<T extends Rule>(factory: (id: number) => T): T {\n\t\tlet id = (++this._lastRuleId);\n\t\tlet result = factory(id);\n\t\tthis._ruleId2desc[id] = result;\n\t\treturn result;\n\t}\n\n\tpublic getRule(patternId: number): Rule {\n\t\treturn this._ruleId2desc[patternId];\n\t}\n\n\tpublic getExternalGrammar(scopeName: string, repository?: IRawRepository): IRawGrammar {\n\t\tif (this._includedGrammars[scopeName]) {\n\t\t\treturn this._includedGrammars[scopeName];\n\t\t} else if (this._grammarRepository) {\n\t\t\tlet rawIncludedGrammar = this._grammarRepository.lookup(scopeName);\n\t\t\tif (rawIncludedGrammar) {\n\t\t\t\t// console.log('LOADED GRAMMAR ' + pattern.include);\n\t\t\t\tthis._includedGrammars[scopeName] = initGrammar(rawIncludedGrammar, repository && repository.$base);\n\t\t\t\treturn this._includedGrammars[scopeName];\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic tokenizeLine(lineText: string, prevState: StackElement): ITokenizeLineResult {\n\t\tlet r = this._tokenize(lineText, prevState, false);\n\t\treturn {\n\t\t\ttokens: r.lineTokens.getResult(r.ruleStack, r.lineLength),\n\t\t\truleStack: r.ruleStack\n\t\t};\n\t}\n\n\tpublic tokenizeLine2(lineText: string, prevState: StackElement): ITokenizeLineResult2 {\n\t\tlet r = this._tokenize(lineText, prevState, true);\n\t\treturn {\n\t\t\ttokens: r.lineTokens.getBinaryResult(r.ruleStack, r.lineLength),\n\t\t\truleStack: r.ruleStack\n\t\t};\n\t}\n\n\tprivate _tokenize(lineText: string, prevState: StackElement, emitBinaryTokens: boolean): { lineLength: number; lineTokens: LineTokens; ruleStack: StackElement; } {\n\t\tif (this._rootId === -1) {\n\t\t\tthis._rootId = RuleFactory.getCompiledRuleId(this._grammar.repository.$self, this, this._grammar.repository);\n\t\t}\n\n\t\tlet isFirstLine: boolean;\n\t\tif (!prevState || prevState === StackElement.NULL) {\n\t\t\tisFirstLine = true;\n\t\t\tlet rawDefaultMetadata = this._scopeMetadataProvider.getDefaultMetadata();\n\t\t\tlet defaultTheme = rawDefaultMetadata.themeData[0];\n\t\t\tlet defaultMetadata = StackElementMetadata.set(0, rawDefaultMetadata.languageId, rawDefaultMetadata.tokenType, defaultTheme.fontStyle, defaultTheme.foreground, defaultTheme.background);\n\n\t\t\tlet rootScopeName = this.getRule(this._rootId).getName(null, null);\n\t\t\tlet rawRootMetadata = this._scopeMetadataProvider.getMetadataForScope(rootScopeName);\n\t\t\tlet rootMetadata = ScopeListElement.mergeMetadata(defaultMetadata, null, rawRootMetadata);\n\n\t\t\tlet scopeList = new ScopeListElement(null, rootScopeName, rootMetadata);\n\n\t\t\tprevState = new StackElement(null, this._rootId, -1, null, scopeList, scopeList);\n\t\t} else {\n\t\t\tisFirstLine = false;\n\t\t\tprevState.reset();\n\t\t}\n\n\t\tlineText = lineText + '\\n';\n\t\tlet onigLineText = createOnigString(lineText);\n\t\tlet lineLength = getString(onigLineText).length;\n\t\tlet lineTokens = new LineTokens(emitBinaryTokens, lineText, this._tokenTypeMatchers);\n\t\tlet nextState = _tokenizeString(this, onigLineText, isFirstLine, 0, prevState, lineTokens);\n\n\t\treturn {\n\t\t\tlineLength: lineLength,\n\t\t\tlineTokens: lineTokens,\n\t\t\truleStack: nextState\n\t\t};\n\t}\n}\n\nfunction initGrammar(grammar: IRawGrammar, base: IRawRule): IRawGrammar {\n\tgrammar = clone(grammar);\n\n\tgrammar.repository = grammar.repository || <any>{};\n\tgrammar.repository.$self = {\n\t\t$vscodeTextmateLocation: grammar.$vscodeTextmateLocation,\n\t\tpatterns: grammar.patterns,\n\t\tname: grammar.scopeName\n\t};\n\tgrammar.repository.$base = base || grammar.repository.$self;\n\treturn grammar;\n}\n\nfunction handleCaptures(grammar: Grammar, lineText: OnigString, isFirstLine: boolean, stack: StackElement, lineTokens: LineTokens, captures: CaptureRule[], captureIndices: IOnigCaptureIndex[]): void {\n\tif (captures.length === 0) {\n\t\treturn;\n\t}\n\n\tlet len = Math.min(captures.length, captureIndices.length);\n\tlet localStack: LocalStackElement[] = [];\n\tlet maxEnd = captureIndices[0].end;\n\n\tfor (let i = 0; i < len; i++) {\n\t\tlet captureRule = captures[i];\n\t\tif (captureRule === null) {\n\t\t\t// Not interested\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet captureIndex = captureIndices[i];\n\n\t\tif (captureIndex.length === 0) {\n\t\t\t// Nothing really captured\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (captureIndex.start > maxEnd) {\n\t\t\t// Capture going beyond consumed string\n\t\t\tbreak;\n\t\t}\n\n\t\t// pop captures while needed\n\t\twhile (localStack.length > 0 && localStack[localStack.length - 1].endPos <= captureIndex.start) {\n\t\t\t// pop!\n\t\t\tlineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n\t\t\tlocalStack.pop();\n\t\t}\n\n\t\tif (localStack.length > 0) {\n\t\t\tlineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, captureIndex.start);\n\t\t} else {\n\t\t\tlineTokens.produce(stack, captureIndex.start);\n\t\t}\n\n\t\tif (captureRule.retokenizeCapturedWithRuleId) {\n\t\t\t// the capture requires additional matching\n\t\t\tlet scopeName = captureRule.getName(getString(lineText), captureIndices);\n\t\t\tlet nameScopesList = stack.contentNameScopesList.push(grammar, scopeName);\n\t\t\tlet contentName = captureRule.getContentName(getString(lineText), captureIndices);\n\t\t\tlet contentNameScopesList = nameScopesList.push(grammar, contentName);\n\n\t\t\tlet stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, null, nameScopesList, contentNameScopesList);\n\t\t\t_tokenizeString(grammar,\n\t\t\t\tcreateOnigString(\n\t\t\t\t\tgetString(lineText).substring(0, captureIndex.end)\n\t\t\t\t),\n\t\t\t\t(isFirstLine && captureIndex.start === 0), captureIndex.start, stackClone, lineTokens\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet captureRuleScopeName = captureRule.getName(getString(lineText), captureIndices);\n\t\tif (captureRuleScopeName !== null) {\n\t\t\t// push\n\t\t\tlet base = localStack.length > 0 ? localStack[localStack.length - 1].scopes : stack.contentNameScopesList;\n\t\t\tlet captureRuleScopesList = base.push(grammar, captureRuleScopeName);\n\t\t\tlocalStack.push(new LocalStackElement(captureRuleScopesList, captureIndex.end));\n\t\t}\n\t}\n\n\twhile (localStack.length > 0) {\n\t\t// pop!\n\t\tlineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n\t\tlocalStack.pop();\n\t}\n}\n\ninterface IMatchInjectionsResult {\n\treadonly priorityMatch: boolean;\n\treadonly captureIndices: IOnigCaptureIndex[];\n\treadonly matchedRuleId: number;\n}\n\nfunction debugCompiledRuleToString(ruleScanner: ICompiledRule): string {\n\tlet r: string[] = [];\n\tfor (let i = 0, len = ruleScanner.rules.length; i < len; i++) {\n\t\tr.push('   - ' + ruleScanner.rules[i] + ': ' + ruleScanner.debugRegExps[i]);\n\t}\n\treturn r.join('\\n');\n}\n\nfunction matchInjections(injections: Injection[], grammar: Grammar, lineText: OnigString, isFirstLine: boolean, linePos: number, stack: StackElement, anchorPosition: number): IMatchInjectionsResult {\n\t// The lower the better\n\tlet bestMatchRating = Number.MAX_VALUE;\n\tlet bestMatchCaptureIndices: IOnigCaptureIndex[] = null;\n\tlet bestMatchRuleId: number;\n\tlet bestMatchResultPriority: number = 0;\n\n\tlet scopes = stack.contentNameScopesList.generateScopes();\n\n\tfor (let i = 0, len = injections.length; i < len; i++) {\n\t\tlet injection = injections[i];\n\t\tif (!injection.matcher(scopes)) {\n\t\t\t// injection selector doesn't match stack\n\t\t\tcontinue;\n\t\t}\n\t\tlet ruleScanner = grammar.getRule(injection.ruleId).compile(grammar, null, isFirstLine, linePos === anchorPosition);\n\t\tlet matchResult = ruleScanner.scanner.findNextMatchSync(lineText, linePos);\n\t\tif (IN_DEBUG_MODE) {\n\t\t\tconsole.log('  scanning for injections');\n\t\t\tconsole.log(debugCompiledRuleToString(ruleScanner));\n\t\t}\n\n\t\tif (!matchResult) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet matchRating = matchResult.captureIndices[0].start;\n\t\tif (matchRating >= bestMatchRating) {\n\t\t\t// Injections are sorted by priority, so the previous injection had a better or equal priority\n\t\t\tcontinue;\n\t\t}\n\n\t\tbestMatchRating = matchRating;\n\t\tbestMatchCaptureIndices = matchResult.captureIndices;\n\t\tbestMatchRuleId = ruleScanner.rules[matchResult.index];\n\t\tbestMatchResultPriority = injection.priority;\n\n\t\tif (bestMatchRating === linePos) {\n\t\t\t// No more need to look at the rest of the injections.\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (bestMatchCaptureIndices) {\n\t\treturn {\n\t\t\tpriorityMatch: bestMatchResultPriority === -1,\n\t\t\tcaptureIndices: bestMatchCaptureIndices,\n\t\t\tmatchedRuleId: bestMatchRuleId\n\t\t};\n\t}\n\n\treturn null;\n}\n\ninterface IMatchResult {\n\treadonly captureIndices: IOnigCaptureIndex[];\n\treadonly matchedRuleId: number;\n}\n\nfunction matchRule(grammar: Grammar, lineText: OnigString, isFirstLine: boolean, linePos: number, stack: StackElement, anchorPosition: number): IMatchResult {\n\tlet rule = stack.getRule(grammar);\n\tlet ruleScanner = rule.compile(grammar, stack.endRule, isFirstLine, linePos === anchorPosition);\n\tlet r = ruleScanner.scanner.findNextMatchSync(lineText, linePos);\n\tif (IN_DEBUG_MODE) {\n\t\tconsole.log('  scanning for');\n\t\tconsole.log(debugCompiledRuleToString(ruleScanner));\n\t}\n\n\tif (r) {\n\t\treturn {\n\t\t\tcaptureIndices: r.captureIndices,\n\t\t\tmatchedRuleId: ruleScanner.rules[r.index]\n\t\t};\n\t}\n\treturn null;\n}\n\nfunction matchRuleOrInjections(grammar: Grammar, lineText: OnigString, isFirstLine: boolean, linePos: number, stack: StackElement, anchorPosition: number): IMatchResult {\n\t// Look for normal grammar rule\n\tlet matchResult = matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n\n\t// Look for injected rules\n\tlet injections = grammar.getInjections();\n\tif (injections.length === 0) {\n\t\t// No injections whatsoever => early return\n\t\treturn matchResult;\n\t}\n\n\tlet injectionResult = matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n\tif (!injectionResult) {\n\t\t// No injections matched => early return\n\t\treturn matchResult;\n\t}\n\n\tif (!matchResult) {\n\t\t// Only injections matched => early return\n\t\treturn injectionResult;\n\t}\n\n\t// Decide if `matchResult` or `injectionResult` should win\n\tlet matchResultScore = matchResult.captureIndices[0].start;\n\tlet injectionResultScore = injectionResult.captureIndices[0].start;\n\n\tif (injectionResultScore < matchResultScore || (injectionResult.priorityMatch && injectionResultScore === matchResultScore)) {\n\t\t// injection won!\n\t\treturn injectionResult;\n\t}\n\treturn matchResult;\n}\n\ninterface IWhileStack {\n\treadonly stack: StackElement;\n\treadonly rule: BeginWhileRule;\n}\n\ninterface IWhileCheckResult {\n\treadonly stack: StackElement;\n\treadonly linePos: number;\n\treadonly anchorPosition: number;\n\treadonly isFirstLine: boolean;\n}\n\n/**\n * Walk the stack from bottom to top, and check each while condition in this order.\n * If any fails, cut off the entire stack above the failed while condition. While conditions\n * may also advance the linePosition.\n */\nfunction _checkWhileConditions(grammar: Grammar, lineText: OnigString, isFirstLine: boolean, linePos: number, stack: StackElement, lineTokens: LineTokens): IWhileCheckResult {\n\tlet anchorPosition = -1;\n\tlet whileRules: IWhileStack[] = [];\n\tfor (let node = stack; node; node = node.pop()) {\n\t\tlet nodeRule = node.getRule(grammar);\n\t\tif (nodeRule instanceof BeginWhileRule) {\n\t\t\twhileRules.push({\n\t\t\t\trule: nodeRule,\n\t\t\t\tstack: node\n\t\t\t});\n\t\t}\n\t}\n\n\tfor (let whileRule = whileRules.pop(); whileRule; whileRule = whileRules.pop()) {\n\t\tlet ruleScanner = whileRule.rule.compileWhile(grammar, whileRule.stack.endRule, isFirstLine, anchorPosition === linePos);\n\t\tlet r = ruleScanner.scanner.findNextMatchSync(lineText, linePos);\n\t\tif (IN_DEBUG_MODE) {\n\t\t\tconsole.log('  scanning for while rule');\n\t\t\tconsole.log(debugCompiledRuleToString(ruleScanner));\n\t\t}\n\n\t\tif (r) {\n\t\t\tlet matchedRuleId = ruleScanner.rules[r.index];\n\t\t\tif (matchedRuleId !== -2) {\n\t\t\t\t// we shouldn't end up here\n\t\t\t\tstack = whileRule.stack.pop();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (r.captureIndices && r.captureIndices.length) {\n\t\t\t\tlineTokens.produce(whileRule.stack, r.captureIndices[0].start);\n\t\t\t\thandleCaptures(grammar, lineText, isFirstLine, whileRule.stack, lineTokens, whileRule.rule.whileCaptures, r.captureIndices);\n\t\t\t\tlineTokens.produce(whileRule.stack, r.captureIndices[0].end);\n\t\t\t\tanchorPosition = r.captureIndices[0].end;\n\t\t\t\tif (r.captureIndices[0].end > linePos) {\n\t\t\t\t\tlinePos = r.captureIndices[0].end;\n\t\t\t\t\tisFirstLine = false;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tstack = whileRule.stack.pop();\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn { stack: stack, linePos: linePos, anchorPosition: anchorPosition, isFirstLine: isFirstLine };\n}\n\nfunction _tokenizeString(grammar: Grammar, lineText: OnigString, isFirstLine: boolean, linePos: number, stack: StackElement, lineTokens: LineTokens): StackElement {\n\tconst lineLength = getString(lineText).length;\n\n\tlet STOP = false;\n\n\tlet whileCheckResult = _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens);\n\tstack = whileCheckResult.stack;\n\tlinePos = whileCheckResult.linePos;\n\tisFirstLine = whileCheckResult.isFirstLine;\n\tlet anchorPosition = whileCheckResult.anchorPosition;\n\n\twhile (!STOP) {\n\t\tscanNext(); // potentially modifies linePos && anchorPosition\n\t}\n\n\tfunction scanNext(): void {\n\t\tif (IN_DEBUG_MODE) {\n\t\t\tconsole.log('');\n\t\t\tconsole.log('@@scanNext: |' + getString(lineText).replace(/\\n$/, '\\\\n').substr(linePos) + '|');\n\t\t}\n\t\tlet r = matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n\n\t\tif (!r) {\n\t\t\tif (IN_DEBUG_MODE) {\n\t\t\t\tconsole.log('  no more matches.');\n\t\t\t}\n\t\t\t// No match\n\t\t\tlineTokens.produce(stack, lineLength);\n\t\t\tSTOP = true;\n\t\t\treturn;\n\t\t}\n\n\t\tlet captureIndices: IOnigCaptureIndex[] = r.captureIndices;\n\t\tlet matchedRuleId: number = r.matchedRuleId;\n\n\t\tlet hasAdvanced = (captureIndices && captureIndices.length > 0) ? (captureIndices[0].end > linePos) : false;\n\n\t\tif (matchedRuleId === -1) {\n\t\t\t// We matched the `end` for this rule => pop it\n\t\t\tlet poppedRule = <BeginEndRule>stack.getRule(grammar);\n\n\t\t\tif (IN_DEBUG_MODE) {\n\t\t\t\tconsole.log('  popping ' + poppedRule.debugName + ' - ' + poppedRule.debugEndRegExp);\n\t\t\t}\n\n\t\t\tlineTokens.produce(stack, captureIndices[0].start);\n\t\t\tstack = stack.setContentNameScopesList(stack.nameScopesList);\n\t\t\thandleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, poppedRule.endCaptures, captureIndices);\n\t\t\tlineTokens.produce(stack, captureIndices[0].end);\n\n\t\t\t// pop\n\t\t\tlet popped = stack;\n\t\t\tstack = stack.pop();\n\n\t\t\tif (!hasAdvanced && popped.getEnterPos() === linePos) {\n\t\t\t\t// Grammar pushed & popped a rule without advancing\n\t\t\t\tconsole.error('[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing');\n\n\t\t\t\t// See https://github.com/Microsoft/vscode-textmate/issues/12\n\t\t\t\t// Let's assume this was a mistake by the grammar author and the intent was to continue in this state\n\t\t\t\tstack = popped;\n\n\t\t\t\tlineTokens.produce(stack, lineLength);\n\t\t\t\tSTOP = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\t// We matched a rule!\n\t\t\tlet _rule = grammar.getRule(matchedRuleId);\n\n\t\t\tlineTokens.produce(stack, captureIndices[0].start);\n\n\t\t\tlet beforePush = stack;\n\t\t\t// push it on the stack rule\n\t\t\tlet scopeName = _rule.getName(getString(lineText), captureIndices);\n\t\t\tlet nameScopesList = stack.contentNameScopesList.push(grammar, scopeName);\n\t\t\tstack = stack.push(matchedRuleId, linePos, null, nameScopesList, nameScopesList);\n\n\t\t\tif (_rule instanceof BeginEndRule) {\n\t\t\t\tlet pushedRule = <BeginEndRule>_rule;\n\t\t\t\tif (IN_DEBUG_MODE) {\n\t\t\t\t\tconsole.log('  pushing ' + pushedRule.debugName + ' - ' + pushedRule.debugBeginRegExp);\n\t\t\t\t}\n\n\t\t\t\thandleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, pushedRule.beginCaptures, captureIndices);\n\t\t\t\tlineTokens.produce(stack, captureIndices[0].end);\n\t\t\t\tanchorPosition = captureIndices[0].end;\n\n\t\t\t\tlet contentName = pushedRule.getContentName(getString(lineText), captureIndices);\n\t\t\t\tlet contentNameScopesList = nameScopesList.push(grammar, contentName);\n\t\t\t\tstack = stack.setContentNameScopesList(contentNameScopesList);\n\n\t\t\t\tif (pushedRule.endHasBackReferences) {\n\t\t\t\t\tstack = stack.setEndRule(pushedRule.getEndWithResolvedBackReferences(getString(lineText), captureIndices));\n\t\t\t\t}\n\n\t\t\t\tif (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n\t\t\t\t\t// Grammar pushed the same rule without advancing\n\t\t\t\t\tconsole.error('[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing');\n\t\t\t\t\tstack = stack.pop();\n\t\t\t\t\tlineTokens.produce(stack, lineLength);\n\t\t\t\t\tSTOP = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if (_rule instanceof BeginWhileRule) {\n\t\t\t\tlet pushedRule = <BeginWhileRule>_rule;\n\t\t\t\tif (IN_DEBUG_MODE) {\n\t\t\t\t\tconsole.log('  pushing ' + pushedRule.debugName);\n\t\t\t\t}\n\n\t\t\t\thandleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, pushedRule.beginCaptures, captureIndices);\n\t\t\t\tlineTokens.produce(stack, captureIndices[0].end);\n\t\t\t\tanchorPosition = captureIndices[0].end;\n\t\t\t\tlet contentName = pushedRule.getContentName(getString(lineText), captureIndices);\n\t\t\t\tlet contentNameScopesList = nameScopesList.push(grammar, contentName);\n\t\t\t\tstack = stack.setContentNameScopesList(contentNameScopesList);\n\n\t\t\t\tif (pushedRule.whileHasBackReferences) {\n\t\t\t\t\tstack = stack.setEndRule(pushedRule.getWhileWithResolvedBackReferences(getString(lineText), captureIndices));\n\t\t\t\t}\n\n\t\t\t\tif (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n\t\t\t\t\t// Grammar pushed the same rule without advancing\n\t\t\t\t\tconsole.error('[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing');\n\t\t\t\t\tstack = stack.pop();\n\t\t\t\t\tlineTokens.produce(stack, lineLength);\n\t\t\t\t\tSTOP = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet matchingRule = <MatchRule>_rule;\n\t\t\t\tif (IN_DEBUG_MODE) {\n\t\t\t\t\tconsole.log('  matched ' + matchingRule.debugName + ' - ' + matchingRule.debugMatchRegExp);\n\t\t\t\t}\n\n\t\t\t\thandleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, matchingRule.captures, captureIndices);\n\t\t\t\tlineTokens.produce(stack, captureIndices[0].end);\n\n\t\t\t\t// pop rule immediately since it is a MatchRule\n\t\t\t\tstack = stack.pop();\n\n\t\t\t\tif (!hasAdvanced) {\n\t\t\t\t\t// Grammar is not advancing, nor is it pushing/popping\n\t\t\t\t\tconsole.error('[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping');\n\t\t\t\t\tstack = stack.safePop();\n\t\t\t\t\tlineTokens.produce(stack, lineLength);\n\t\t\t\t\tSTOP = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (captureIndices[0].end > linePos) {\n\t\t\t// Advance stream\n\t\t\tlinePos = captureIndices[0].end;\n\t\t\tisFirstLine = false;\n\t\t}\n\t}\n\n\treturn stack;\n}\n\n\nexport class StackElementMetadata {\n\n\tpublic static toBinaryStr(metadata: number): string {\n\t\tlet r = metadata.toString(2);\n\t\twhile (r.length < 32) {\n\t\t\tr = '0' + r;\n\t\t}\n\t\treturn r;\n\t}\n\n\tpublic static printMetadata(metadata: number): void {\n\t\tlet languageId = StackElementMetadata.getLanguageId(metadata);\n\t\tlet tokenType = StackElementMetadata.getTokenType(metadata);\n\t\tlet fontStyle = StackElementMetadata.getFontStyle(metadata);\n\t\tlet foreground = StackElementMetadata.getForeground(metadata);\n\t\tlet background = StackElementMetadata.getBackground(metadata);\n\n\t\tconsole.log({\n\t\t\tlanguageId: languageId,\n\t\t\ttokenType: tokenType,\n\t\t\tfontStyle: fontStyle,\n\t\t\tforeground: foreground,\n\t\t\tbackground: background,\n\t\t});\n\t}\n\n\tpublic static getLanguageId(metadata: number): number {\n\t\treturn (metadata & MetadataConsts.LANGUAGEID_MASK) >>> MetadataConsts.LANGUAGEID_OFFSET;\n\t}\n\n\tpublic static getTokenType(metadata: number): number {\n\t\treturn (metadata & MetadataConsts.TOKEN_TYPE_MASK) >>> MetadataConsts.TOKEN_TYPE_OFFSET;\n\t}\n\n\tpublic static getFontStyle(metadata: number): number {\n\t\treturn (metadata & MetadataConsts.FONT_STYLE_MASK) >>> MetadataConsts.FONT_STYLE_OFFSET;\n\t}\n\n\tpublic static getForeground(metadata: number): number {\n\t\treturn (metadata & MetadataConsts.FOREGROUND_MASK) >>> MetadataConsts.FOREGROUND_OFFSET;\n\t}\n\n\tpublic static getBackground(metadata: number): number {\n\t\treturn (metadata & MetadataConsts.BACKGROUND_MASK) >>> MetadataConsts.BACKGROUND_OFFSET;\n\t}\n\n\tpublic static set(metadata: number, languageId: number, tokenType: TemporaryStandardTokenType, fontStyle: FontStyle, foreground: number, background: number): number {\n\t\tlet _languageId = StackElementMetadata.getLanguageId(metadata);\n\t\tlet _tokenType = StackElementMetadata.getTokenType(metadata);\n\t\tlet _fontStyle = StackElementMetadata.getFontStyle(metadata);\n\t\tlet _foreground = StackElementMetadata.getForeground(metadata);\n\t\tlet _background = StackElementMetadata.getBackground(metadata);\n\n\t\tif (languageId !== 0) {\n\t\t\t_languageId = languageId;\n\t\t}\n\t\tif (tokenType !== TemporaryStandardTokenType.Other) {\n\t\t\t_tokenType = tokenType === TemporaryStandardTokenType.MetaEmbedded ? StandardTokenType.Other : tokenType;\n\t\t}\n\t\tif (fontStyle !== FontStyle.NotSet) {\n\t\t\t_fontStyle = fontStyle;\n\t\t}\n\t\tif (foreground !== 0) {\n\t\t\t_foreground = foreground;\n\t\t}\n\t\tif (background !== 0) {\n\t\t\t_background = background;\n\t\t}\n\n\t\treturn (\n\t\t\t(_languageId << MetadataConsts.LANGUAGEID_OFFSET)\n\t\t\t| (_tokenType << MetadataConsts.TOKEN_TYPE_OFFSET)\n\t\t\t| (_fontStyle << MetadataConsts.FONT_STYLE_OFFSET)\n\t\t\t| (_foreground << MetadataConsts.FOREGROUND_OFFSET)\n\t\t\t| (_background << MetadataConsts.BACKGROUND_OFFSET)\n\t\t) >>> 0;\n\t}\n}\n\nexport class ScopeListElement {\n\t_scopeListElementBrand: void;\n\n\tpublic readonly parent: ScopeListElement;\n\tpublic readonly scope: string;\n\tpublic readonly metadata: number;\n\n\tconstructor(parent: ScopeListElement, scope: string, metadata: number) {\n\t\tthis.parent = parent;\n\t\tthis.scope = scope;\n\t\tthis.metadata = metadata;\n\t}\n\n\tprivate static _equals(a: ScopeListElement, b: ScopeListElement): boolean {\n\t\tdo {\n\t\t\tif (a === b) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (a.scope !== b.scope || a.metadata !== b.metadata) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Go to previous pair\n\t\t\ta = a.parent;\n\t\t\tb = b.parent;\n\n\t\t\tif (!a && !b) {\n\t\t\t\t// End of list reached for both\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!a || !b) {\n\t\t\t\t// End of list reached only for one\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t} while (true);\n\t}\n\n\tpublic equals(other: ScopeListElement): boolean {\n\t\treturn ScopeListElement._equals(this, other);\n\t}\n\n\tprivate static _matchesScope(scope: string, selector: string, selectorWithDot: string): boolean {\n\t\treturn (selector === scope || scope.substring(0, selectorWithDot.length) === selectorWithDot);\n\t}\n\n\tprivate static _matches(target: ScopeListElement, parentScopes: string[]): boolean {\n\t\tif (parentScopes === null) {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet len = parentScopes.length;\n\t\tlet index = 0;\n\t\tlet selector = parentScopes[index];\n\t\tlet selectorWithDot = selector + '.';\n\n\t\twhile (target) {\n\t\t\tif (this._matchesScope(target.scope, selector, selectorWithDot)) {\n\t\t\t\tindex++;\n\t\t\t\tif (index === len) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tselector = parentScopes[index];\n\t\t\t\tselectorWithDot = selector + '.';\n\t\t\t}\n\t\t\ttarget = target.parent;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpublic static mergeMetadata(metadata: number, scopesList: ScopeListElement, source: ScopeMetadata): number {\n\t\tif (source === null) {\n\t\t\treturn metadata;\n\t\t}\n\n\t\tlet fontStyle = FontStyle.NotSet;\n\t\tlet foreground = 0;\n\t\tlet background = 0;\n\n\t\tif (source.themeData !== null) {\n\t\t\t// Find the first themeData that matches\n\t\t\tfor (let i = 0, len = source.themeData.length; i < len; i++) {\n\t\t\t\tlet themeData = source.themeData[i];\n\n\t\t\t\tif (this._matches(scopesList, themeData.parentScopes)) {\n\t\t\t\t\tfontStyle = themeData.fontStyle;\n\t\t\t\t\tforeground = themeData.foreground;\n\t\t\t\t\tbackground = themeData.background;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn StackElementMetadata.set(metadata, source.languageId, source.tokenType, fontStyle, foreground, background);\n\t}\n\n\tprivate static _push(target: ScopeListElement, grammar: Grammar, scopes: string[]): ScopeListElement {\n\t\tfor (let i = 0, len = scopes.length; i < len; i++) {\n\t\t\tlet scope = scopes[i];\n\t\t\tlet rawMetadata = grammar.getMetadataForScope(scope);\n\t\t\tlet metadata = ScopeListElement.mergeMetadata(target.metadata, target, rawMetadata);\n\t\t\ttarget = new ScopeListElement(target, scope, metadata);\n\t\t}\n\t\treturn target;\n\t}\n\n\tpublic push(grammar: Grammar, scope: string): ScopeListElement {\n\t\tif (scope === null) {\n\t\t\treturn this;\n\t\t}\n\t\tif (scope.indexOf(' ') >= 0) {\n\t\t\t// there are multiple scopes to push\n\t\t\treturn ScopeListElement._push(this, grammar, scope.split(/ /g));\n\t\t}\n\t\t// there is a single scope to push\n\t\treturn ScopeListElement._push(this, grammar, [scope]);\n\t}\n\n\tprivate static _generateScopes(scopesList: ScopeListElement): string[] {\n\t\tlet result: string[] = [], resultLen = 0;\n\t\twhile (scopesList) {\n\t\t\tresult[resultLen++] = scopesList.scope;\n\t\t\tscopesList = scopesList.parent;\n\t\t}\n\t\tresult.reverse();\n\t\treturn result;\n\t}\n\n\tpublic generateScopes(): string[] {\n\t\treturn ScopeListElement._generateScopes(this);\n\t}\n}\n\n/**\n * Represents a \"pushed\" state on the stack (as a linked list element).\n */\nexport class StackElement implements StackElementDef {\n\t_stackElementBrand: void;\n\n\tpublic static NULL = new StackElement(null, 0, 0, null, null, null);\n\n\t/**\n\t * The position on the current line where this state was pushed.\n\t * This is relevant only while tokenizing a line, to detect endless loops.\n\t * Its value is meaningless across lines.\n\t */\n\tprivate _enterPos: number;\n\n\t/**\n\t * The previous state on the stack (or null for the root state).\n\t */\n\tpublic readonly parent: StackElement;\n\t/**\n\t * The depth of the stack.\n\t */\n\tpublic readonly depth: number;\n\n\t/**\n\t * The state (rule) that this element represents.\n\t */\n\tpublic readonly ruleId: number;\n\t/**\n\t * The \"pop\" (end) condition for this state in case that it was dynamically generated through captured text.\n\t */\n\tpublic readonly endRule: string;\n\t/**\n\t * The list of scopes containing the \"name\" for this state.\n\t */\n\tpublic readonly nameScopesList: ScopeListElement;\n\t/**\n\t * The list of scopes containing the \"contentName\" (besides \"name\") for this state.\n\t * This list **must** contain as an element `scopeName`.\n\t */\n\tpublic readonly contentNameScopesList: ScopeListElement;\n\n\tconstructor(parent: StackElement, ruleId: number, enterPos: number, endRule: string, nameScopesList: ScopeListElement, contentNameScopesList: ScopeListElement) {\n\t\tthis.parent = parent;\n\t\tthis.depth = (this.parent ? this.parent.depth + 1 : 1);\n\t\tthis.ruleId = ruleId;\n\t\tthis._enterPos = enterPos;\n\t\tthis.endRule = endRule;\n\t\tthis.nameScopesList = nameScopesList;\n\t\tthis.contentNameScopesList = contentNameScopesList;\n\t}\n\n\t/**\n\t * A structural equals check. Does not take into account `scopes`.\n\t */\n\tprivate static _structuralEquals(a: StackElement, b: StackElement): boolean {\n\t\tdo {\n\t\t\tif (a === b) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (a.depth !== b.depth || a.ruleId !== b.ruleId || a.endRule !== b.endRule) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Go to previous pair\n\t\t\ta = a.parent;\n\t\t\tb = b.parent;\n\n\t\t\tif (!a && !b) {\n\t\t\t\t// End of list reached for both\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (!a || !b) {\n\t\t\t\t// End of list reached only for one\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t} while (true);\n\t}\n\n\tprivate static _equals(a: StackElement, b: StackElement): boolean {\n\t\tif (a === b) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!this._structuralEquals(a, b)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn a.contentNameScopesList.equals(b.contentNameScopesList);\n\t}\n\n\tpublic clone(): StackElement {\n\t\treturn this;\n\t}\n\n\tpublic equals(other: StackElement): boolean {\n\t\tif (other === null) {\n\t\t\treturn false;\n\t\t}\n\t\treturn StackElement._equals(this, other);\n\t}\n\n\tprivate static _reset(el: StackElement): void {\n\t\twhile (el) {\n\t\t\tel._enterPos = -1;\n\t\t\tel = el.parent;\n\t\t}\n\t}\n\n\tpublic reset(): void {\n\t\tStackElement._reset(this);\n\t}\n\n\tpublic pop(): StackElement {\n\t\treturn this.parent;\n\t}\n\n\tpublic safePop(): StackElement {\n\t\tif (this.parent) {\n\t\t\treturn this.parent;\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic push(ruleId: number, enterPos: number, endRule: string, nameScopesList: ScopeListElement, contentNameScopesList: ScopeListElement): StackElement {\n\t\treturn new StackElement(this, ruleId, enterPos, endRule, nameScopesList, contentNameScopesList);\n\t}\n\n\tpublic getEnterPos(): number {\n\t\treturn this._enterPos;\n\t}\n\n\tpublic getRule(grammar: IRuleRegistry): Rule {\n\t\treturn grammar.getRule(this.ruleId);\n\t}\n\n\tprivate _writeString(res: string[], outIndex: number): number {\n\t\tif (this.parent) {\n\t\t\toutIndex = this.parent._writeString(res, outIndex);\n\t\t}\n\n\t\tres[outIndex++] = `(${this.ruleId}, TODO-${this.nameScopesList}, TODO-${this.contentNameScopesList})`;\n\n\t\treturn outIndex;\n\t}\n\n\tpublic toString(): string {\n\t\tlet r: string[] = [];\n\t\tthis._writeString(r, 0);\n\t\treturn '[' + r.join(',') + ']';\n\t}\n\n\tpublic setContentNameScopesList(contentNameScopesList: ScopeListElement): StackElement {\n\t\tif (this.contentNameScopesList === contentNameScopesList) {\n\t\t\treturn this;\n\t\t}\n\t\treturn this.parent.push(this.ruleId, this._enterPos, this.endRule, this.nameScopesList, contentNameScopesList);\n\t}\n\n\tpublic setEndRule(endRule: string): StackElement {\n\t\tif (this.endRule === endRule) {\n\t\t\treturn this;\n\t\t}\n\t\treturn new StackElement(this.parent, this.ruleId, this._enterPos, endRule, this.nameScopesList, this.contentNameScopesList);\n\t}\n\n\tpublic hasSameRuleAs(other: StackElement): boolean {\n\t\treturn this.ruleId === other.ruleId;\n\t}\n}\n\nexport class LocalStackElement {\n\tpublic readonly scopes: ScopeListElement;\n\tpublic readonly endPos: number;\n\n\tconstructor(scopes: ScopeListElement, endPos: number) {\n\t\tthis.scopes = scopes;\n\t\tthis.endPos = endPos;\n\t}\n}\n\ninterface TokenTypeMatcher {\n\treadonly matcher: Matcher<string[]>;\n\treadonly type: StandardTokenType;\n}\n\nclass LineTokens {\n\n\tprivate readonly _emitBinaryTokens: boolean;\n\t/**\n\t * defined only if `IN_DEBUG_MODE`.\n\t */\n\tprivate readonly _lineText: string;\n\t/**\n\t * used only if `_emitBinaryTokens` is false.\n\t */\n\tprivate readonly _tokens: IToken[];\n\t/**\n\t * used only if `_emitBinaryTokens` is true.\n\t */\n\tprivate readonly _binaryTokens: number[];\n\n\tprivate _lastTokenEndIndex: number;\n\n\tprivate readonly _tokenTypeOverrides: TokenTypeMatcher[];\n\n\tconstructor(emitBinaryTokens: boolean, lineText: string, tokenTypeOverrides: TokenTypeMatcher[]) {\n\t\tthis._emitBinaryTokens = emitBinaryTokens;\n\t\tthis._tokenTypeOverrides = tokenTypeOverrides;\n\t\tif (IN_DEBUG_MODE) {\n\t\t\tthis._lineText = lineText;\n\t\t}\n\t\tif (this._emitBinaryTokens) {\n\t\t\tthis._binaryTokens = [];\n\t\t} else {\n\t\t\tthis._tokens = [];\n\t\t}\n\t\tthis._lastTokenEndIndex = 0;\n\t}\n\n\tpublic produce(stack: StackElement, endIndex: number): void {\n\t\tthis.produceFromScopes(stack.contentNameScopesList, endIndex);\n\t}\n\n\tpublic produceFromScopes(scopesList: ScopeListElement, endIndex: number): void {\n\t\tif (this._lastTokenEndIndex >= endIndex) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._emitBinaryTokens) {\n\t\t\tlet metadata = scopesList.metadata;\n\n\t\t\tfor (const tokenType of this._tokenTypeOverrides) {\n\t\t\t\tif (tokenType.matcher(scopesList.generateScopes())) {\n\t\t\t\t\tmetadata = StackElementMetadata.set(metadata, 0, toTemporaryType(tokenType.type), FontStyle.NotSet, 0, 0);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === metadata) {\n\t\t\t\t// no need to push a token with the same metadata\n\t\t\t\tthis._lastTokenEndIndex = endIndex;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._binaryTokens.push(this._lastTokenEndIndex);\n\t\t\tthis._binaryTokens.push(metadata);\n\n\t\t\tthis._lastTokenEndIndex = endIndex;\n\t\t\treturn;\n\t\t}\n\n\t\tlet scopes = scopesList.generateScopes();\n\n\t\tif (IN_DEBUG_MODE) {\n\t\t\tconsole.log('  token: |' + this._lineText.substring(this._lastTokenEndIndex, endIndex).replace(/\\n$/, '\\\\n') + '|');\n\t\t\tfor (var k = 0; k < scopes.length; k++) {\n\t\t\t\tconsole.log('      * ' + scopes[k]);\n\t\t\t}\n\t\t}\n\n\t\tthis._tokens.push({\n\t\t\tstartIndex: this._lastTokenEndIndex,\n\t\t\tendIndex: endIndex,\n\t\t\t// value: lineText.substring(lastTokenEndIndex, endIndex),\n\t\t\tscopes: scopes\n\t\t});\n\n\t\tthis._lastTokenEndIndex = endIndex;\n\t}\n\n\tpublic getResult(stack: StackElement, lineLength: number): IToken[] {\n\t\tif (this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === lineLength - 1) {\n\t\t\t// pop produced token for newline\n\t\t\tthis._tokens.pop();\n\t\t}\n\n\t\tif (this._tokens.length === 0) {\n\t\t\tthis._lastTokenEndIndex = -1;\n\t\t\tthis.produce(stack, lineLength);\n\t\t\tthis._tokens[this._tokens.length - 1].startIndex = 0;\n\t\t}\n\n\t\treturn this._tokens;\n\t}\n\n\tpublic getBinaryResult(stack: StackElement, lineLength: number): Uint32Array {\n\t\tif (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === lineLength - 1) {\n\t\t\t// pop produced token for newline\n\t\t\tthis._binaryTokens.pop();\n\t\t\tthis._binaryTokens.pop();\n\t\t}\n\n\t\tif (this._binaryTokens.length === 0) {\n\t\t\tthis._lastTokenEndIndex = -1;\n\t\t\tthis.produce(stack, lineLength);\n\t\t\tthis._binaryTokens[this._binaryTokens.length - 2] = 0;\n\t\t}\n\n\t\tlet result = new Uint32Array(this._binaryTokens.length);\n\t\tfor (let i = 0, len = this._binaryTokens.length; i < len; i++) {\n\t\t\tresult[i] = this._binaryTokens[i];\n\t\t}\n\n\t\treturn result;\n\t}\n}\n\nfunction toTemporaryType(standardType: StandardTokenType): TemporaryStandardTokenType {\n\tswitch (standardType) {\n\t\tcase StandardTokenType.RegEx:\n\t\t\treturn TemporaryStandardTokenType.RegEx;\n\t\tcase StandardTokenType.String:\n\t\t\treturn TemporaryStandardTokenType.String;\n\t\tcase StandardTokenType.Comment:\n\t\t\treturn TemporaryStandardTokenType.Comment;\n\t\tcase StandardTokenType.Other:\n\t\tdefault:\n\t\t\t// `MetaEmbedded` is the same scope as `Other`\n\t\t\t// but it overwrites existing token types in the stack.\n\t\t\treturn TemporaryStandardTokenType.MetaEmbedded;\n\t}\n}", "/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nimport { createGrammar, Grammar, collectIncludedScopes, IGrammarRepository, IScopeNameSet } from './grammar';\nimport { IRawGrammar } from './types';\nimport { IGrammar, IEmbeddedLanguagesMap, ITokenTypeMap } from './main';\nimport { Theme, ThemeTrieElementRule } from './theme';\n\nexport class SyncRegistry implements IGrammarRepository {\n\n\tprivate readonly _grammars: { [scopeName: string]: Grammar; };\n\tprivate readonly _rawGrammars: { [scopeName: string]: IRawGrammar; };\n\tprivate readonly _injectionGrammars: { [scopeName: string]: string[]; };\n\tprivate _theme: Theme;\n\n\tconstructor(theme: Theme) {\n\t\tthis._theme = theme;\n\t\tthis._grammars = {};\n\t\tthis._rawGrammars = {};\n\t\tthis._injectionGrammars = {};\n\t}\n\n\tpublic setTheme(theme: Theme): void {\n\t\tthis._theme = theme;\n\t\tObject.keys(this._grammars).forEach((scopeName) => {\n\t\t\tlet grammar = this._grammars[scopeName];\n\t\t\tgrammar.onDidChangeTheme();\n\t\t});\n\t}\n\n\tpublic getColorMap(): string[] {\n\t\treturn this._theme.getColorMap();\n\t}\n\n\t/**\n\t * Add `grammar` to registry and return a list of referenced scope names\n\t */\n\tpublic addGrammar(grammar: IRawGrammar, injectionScopeNames?: string[]): string[] {\n\t\tthis._rawGrammars[grammar.scopeName] = grammar;\n\n\t\tlet includedScopes: IScopeNameSet = {};\n\t\tcollectIncludedScopes(includedScopes, grammar);\n\n\t\tif (injectionScopeNames) {\n\t\t\tthis._injectionGrammars[grammar.scopeName] = injectionScopeNames;\n\t\t\tinjectionScopeNames.forEach(scopeName => {\n\t\t\t\tincludedScopes[scopeName] = true;\n\t\t\t});\n\t\t}\n\t\treturn Object.keys(includedScopes);\n\t}\n\n\t/**\n\t * Lookup a raw grammar.\n\t */\n\tpublic lookup(scopeName: string): IRawGrammar {\n\t\treturn this._rawGrammars[scopeName];\n\t}\n\n\t/**\n\t * Returns the injections for the given grammar\n\t */\n\tpublic injections(targetScope: string): string[] {\n\t\treturn this._injectionGrammars[targetScope];\n\t}\n\n\t/**\n\t * Get the default theme settings\n\t */\n\tpublic getDefaults(): ThemeTrieElementRule {\n\t\treturn this._theme.getDefaults();\n\t}\n\n\t/**\n\t * Match a scope in the theme.\n\t */\n\tpublic themeMatch(scopeName: string): ThemeTrieElementRule[] {\n\t\treturn this._theme.match(scopeName);\n\t}\n\n\n\t/**\n\t * Lookup a grammar.\n\t */\n\tpublic grammarForScopeName(scopeName: string, initialLanguage: number, embeddedLanguages: IEmbeddedLanguagesMap, tokenTypes: ITokenTypeMap): IGrammar {\n\t\tif (!this._grammars[scopeName]) {\n\t\t\tlet rawGrammar = this._rawGrammars[scopeName];\n\t\t\tif (!rawGrammar) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tthis._grammars[scopeName] = createGrammar(rawGrammar, initialLanguage, embeddedLanguages, tokenTypes, this);\n\t\t}\n\t\treturn this._grammars[scopeName];\n\t}\n}\n", "/*---------------------------------------------------------\r\n * Copyright (C) Microsoft Corporation. All rights reserved.\r\n *--------------------------------------------------------*/\r\n'use strict';\r\nfunction parseWithLocation(content, filename, locationKeyName) {\r\n    return _parse(content, filename, locationKeyName);\r\n}\r\nexports.parseWithLocation = parseWithLocation;\r\n/**\r\n * A very fast plist parser\r\n */\r\nfunction parse(content) {\r\n    return _parse(content, null, null);\r\n}\r\nexports.parse = parse;\r\nfunction _parse(content, filename, locationKeyName) {\r\n    var len = content.length;\r\n    var pos = 0;\r\n    var line = 1;\r\n    var char = 0;\r\n    // Skip UTF8 BOM\r\n    if (len > 0 && content.charCodeAt(0) === 65279 /* BOM */) {\r\n        pos = 1;\r\n    }\r\n    function advancePosBy(by) {\r\n        if (locationKeyName === null) {\r\n            pos = pos + by;\r\n        }\r\n        else {\r\n            while (by > 0) {\r\n                var chCode = content.charCodeAt(pos);\r\n                if (chCode === 10 /* LINE_FEED */) {\r\n                    pos++;\r\n                    line++;\r\n                    char = 0;\r\n                }\r\n                else {\r\n                    pos++;\r\n                    char++;\r\n                }\r\n                by--;\r\n            }\r\n        }\r\n    }\r\n    function advancePosTo(to) {\r\n        if (locationKeyName === null) {\r\n            pos = to;\r\n        }\r\n        else {\r\n            advancePosBy(to - pos);\r\n        }\r\n    }\r\n    function skipWhitespace() {\r\n        while (pos < len) {\r\n            var chCode = content.charCodeAt(pos);\r\n            if (chCode !== 32 /* SPACE */ && chCode !== 9 /* TAB */ && chCode !== 13 /* CARRIAGE_RETURN */ && chCode !== 10 /* LINE_FEED */) {\r\n                break;\r\n            }\r\n            advancePosBy(1);\r\n        }\r\n    }\r\n    function advanceIfStartsWith(str) {\r\n        if (content.substr(pos, str.length) === str) {\r\n            advancePosBy(str.length);\r\n            return true;\r\n        }\r\n        return false;\r\n    }\r\n    function advanceUntil(str) {\r\n        var nextOccurence = content.indexOf(str, pos);\r\n        if (nextOccurence !== -1) {\r\n            advancePosTo(nextOccurence + str.length);\r\n        }\r\n        else {\r\n            // EOF\r\n            advancePosTo(len);\r\n        }\r\n    }\r\n    function captureUntil(str) {\r\n        var nextOccurence = content.indexOf(str, pos);\r\n        if (nextOccurence !== -1) {\r\n            var r = content.substring(pos, nextOccurence);\r\n            advancePosTo(nextOccurence + str.length);\r\n            return r;\r\n        }\r\n        else {\r\n            // EOF\r\n            var r = content.substr(pos);\r\n            advancePosTo(len);\r\n            return r;\r\n        }\r\n    }\r\n    var state = 0 /* ROOT_STATE */;\r\n    var cur = null;\r\n    var stateStack = [];\r\n    var objStack = [];\r\n    var curKey = null;\r\n    function pushState(newState, newCur) {\r\n        stateStack.push(state);\r\n        objStack.push(cur);\r\n        state = newState;\r\n        cur = newCur;\r\n    }\r\n    function popState() {\r\n        state = stateStack.pop();\r\n        cur = objStack.pop();\r\n    }\r\n    function fail(msg) {\r\n        throw new Error('Near offset ' + pos + ': ' + msg + ' ~~~' + content.substr(pos, 50) + '~~~');\r\n    }\r\n    var dictState = {\r\n        enterDict: function () {\r\n            if (curKey === null) {\r\n                fail('missing <key>');\r\n            }\r\n            var newDict = {};\r\n            if (locationKeyName !== null) {\r\n                newDict[locationKeyName] = {\r\n                    filename: filename,\r\n                    line: line,\r\n                    char: char\r\n                };\r\n            }\r\n            cur[curKey] = newDict;\r\n            curKey = null;\r\n            pushState(1 /* DICT_STATE */, newDict);\r\n        },\r\n        enterArray: function () {\r\n            if (curKey === null) {\r\n                fail('missing <key>');\r\n            }\r\n            var newArr = [];\r\n            cur[curKey] = newArr;\r\n            curKey = null;\r\n            pushState(2 /* ARR_STATE */, newArr);\r\n        }\r\n    };\r\n    var arrState = {\r\n        enterDict: function () {\r\n            var newDict = {};\r\n            if (locationKeyName !== null) {\r\n                newDict[locationKeyName] = {\r\n                    filename: filename,\r\n                    line: line,\r\n                    char: char\r\n                };\r\n            }\r\n            cur.push(newDict);\r\n            pushState(1 /* DICT_STATE */, newDict);\r\n        },\r\n        enterArray: function () {\r\n            var newArr = [];\r\n            cur.push(newArr);\r\n            pushState(2 /* ARR_STATE */, newArr);\r\n        }\r\n    };\r\n    function enterDict() {\r\n        if (state === 1 /* DICT_STATE */) {\r\n            dictState.enterDict();\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            arrState.enterDict();\r\n        }\r\n        else {\r\n            cur = {};\r\n            if (locationKeyName !== null) {\r\n                cur[locationKeyName] = {\r\n                    filename: filename,\r\n                    line: line,\r\n                    char: char\r\n                };\r\n            }\r\n            pushState(1 /* DICT_STATE */, cur);\r\n        }\r\n    }\r\n    function leaveDict() {\r\n        if (state === 1 /* DICT_STATE */) {\r\n            popState();\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            fail('unexpected </dict>');\r\n        }\r\n        else {\r\n            fail('unexpected </dict>');\r\n        }\r\n    }\r\n    function enterArray() {\r\n        if (state === 1 /* DICT_STATE */) {\r\n            dictState.enterArray();\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            arrState.enterArray();\r\n        }\r\n        else {\r\n            cur = [];\r\n            pushState(2 /* ARR_STATE */, cur);\r\n        }\r\n    }\r\n    function leaveArray() {\r\n        if (state === 1 /* DICT_STATE */) {\r\n            fail('unexpected </array>');\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            popState();\r\n        }\r\n        else {\r\n            fail('unexpected </array>');\r\n        }\r\n    }\r\n    function acceptKey(val) {\r\n        if (state === 1 /* DICT_STATE */) {\r\n            if (curKey !== null) {\r\n                fail('too many <key>');\r\n            }\r\n            curKey = val;\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            fail('unexpected <key>');\r\n        }\r\n        else {\r\n            fail('unexpected <key>');\r\n        }\r\n    }\r\n    function acceptString(val) {\r\n        if (state === 1 /* DICT_STATE */) {\r\n            if (curKey === null) {\r\n                fail('missing <key>');\r\n            }\r\n            cur[curKey] = val;\r\n            curKey = null;\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            cur.push(val);\r\n        }\r\n        else {\r\n            cur = val;\r\n        }\r\n    }\r\n    function acceptReal(val) {\r\n        if (isNaN(val)) {\r\n            fail('cannot parse float');\r\n        }\r\n        if (state === 1 /* DICT_STATE */) {\r\n            if (curKey === null) {\r\n                fail('missing <key>');\r\n            }\r\n            cur[curKey] = val;\r\n            curKey = null;\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            cur.push(val);\r\n        }\r\n        else {\r\n            cur = val;\r\n        }\r\n    }\r\n    function acceptInteger(val) {\r\n        if (isNaN(val)) {\r\n            fail('cannot parse integer');\r\n        }\r\n        if (state === 1 /* DICT_STATE */) {\r\n            if (curKey === null) {\r\n                fail('missing <key>');\r\n            }\r\n            cur[curKey] = val;\r\n            curKey = null;\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            cur.push(val);\r\n        }\r\n        else {\r\n            cur = val;\r\n        }\r\n    }\r\n    function acceptDate(val) {\r\n        if (state === 1 /* DICT_STATE */) {\r\n            if (curKey === null) {\r\n                fail('missing <key>');\r\n            }\r\n            cur[curKey] = val;\r\n            curKey = null;\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            cur.push(val);\r\n        }\r\n        else {\r\n            cur = val;\r\n        }\r\n    }\r\n    function acceptData(val) {\r\n        if (state === 1 /* DICT_STATE */) {\r\n            if (curKey === null) {\r\n                fail('missing <key>');\r\n            }\r\n            cur[curKey] = val;\r\n            curKey = null;\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            cur.push(val);\r\n        }\r\n        else {\r\n            cur = val;\r\n        }\r\n    }\r\n    function acceptBool(val) {\r\n        if (state === 1 /* DICT_STATE */) {\r\n            if (curKey === null) {\r\n                fail('missing <key>');\r\n            }\r\n            cur[curKey] = val;\r\n            curKey = null;\r\n        }\r\n        else if (state === 2 /* ARR_STATE */) {\r\n            cur.push(val);\r\n        }\r\n        else {\r\n            cur = val;\r\n        }\r\n    }\r\n    function escapeVal(str) {\r\n        return str.replace(/&#([0-9]+);/g, function (_, m0) {\r\n            return String.fromCodePoint(parseInt(m0, 10));\r\n        }).replace(/&#x([0-9a-f]+);/g, function (_, m0) {\r\n            return String.fromCodePoint(parseInt(m0, 16));\r\n        }).replace(/&amp;|&lt;|&gt;|&quot;|&apos;/g, function (_) {\r\n            switch (_) {\r\n                case '&amp;': return '&';\r\n                case '&lt;': return '<';\r\n                case '&gt;': return '>';\r\n                case '&quot;': return '\"';\r\n                case '&apos;': return '\\'';\r\n            }\r\n            return _;\r\n        });\r\n    }\r\n    function parseOpenTag() {\r\n        var r = captureUntil('>');\r\n        var isClosed = false;\r\n        if (r.charCodeAt(r.length - 1) === 47 /* SLASH */) {\r\n            isClosed = true;\r\n            r = r.substring(0, r.length - 1);\r\n        }\r\n        return {\r\n            name: r.trim(),\r\n            isClosed: isClosed\r\n        };\r\n    }\r\n    function parseTagValue(tag) {\r\n        if (tag.isClosed) {\r\n            return '';\r\n        }\r\n        var val = captureUntil('</');\r\n        advanceUntil('>');\r\n        return escapeVal(val);\r\n    }\r\n    while (pos < len) {\r\n        skipWhitespace();\r\n        if (pos >= len) {\r\n            break;\r\n        }\r\n        var chCode = content.charCodeAt(pos);\r\n        advancePosBy(1);\r\n        if (chCode !== 60 /* LESS_THAN */) {\r\n            fail('expected <');\r\n        }\r\n        if (pos >= len) {\r\n            fail('unexpected end of input');\r\n        }\r\n        var peekChCode = content.charCodeAt(pos);\r\n        if (peekChCode === 63 /* QUESTION_MARK */) {\r\n            advancePosBy(1);\r\n            advanceUntil('?>');\r\n            continue;\r\n        }\r\n        if (peekChCode === 33 /* EXCLAMATION_MARK */) {\r\n            advancePosBy(1);\r\n            if (advanceIfStartsWith('--')) {\r\n                advanceUntil('-->');\r\n                continue;\r\n            }\r\n            advanceUntil('>');\r\n            continue;\r\n        }\r\n        if (peekChCode === 47 /* SLASH */) {\r\n            advancePosBy(1);\r\n            skipWhitespace();\r\n            if (advanceIfStartsWith('plist')) {\r\n                advanceUntil('>');\r\n                continue;\r\n            }\r\n            if (advanceIfStartsWith('dict')) {\r\n                advanceUntil('>');\r\n                leaveDict();\r\n                continue;\r\n            }\r\n            if (advanceIfStartsWith('array')) {\r\n                advanceUntil('>');\r\n                leaveArray();\r\n                continue;\r\n            }\r\n            fail('unexpected closed tag');\r\n        }\r\n        var tag = parseOpenTag();\r\n        switch (tag.name) {\r\n            case 'dict':\r\n                enterDict();\r\n                if (tag.isClosed) {\r\n                    leaveDict();\r\n                }\r\n                continue;\r\n            case 'array':\r\n                enterArray();\r\n                if (tag.isClosed) {\r\n                    leaveArray();\r\n                }\r\n                continue;\r\n            case 'key':\r\n                acceptKey(parseTagValue(tag));\r\n                continue;\r\n            case 'string':\r\n                acceptString(parseTagValue(tag));\r\n                continue;\r\n            case 'real':\r\n                acceptReal(parseFloat(parseTagValue(tag)));\r\n                continue;\r\n            case 'integer':\r\n                acceptInteger(parseInt(parseTagValue(tag), 10));\r\n                continue;\r\n            case 'date':\r\n                acceptDate(new Date(parseTagValue(tag)));\r\n                continue;\r\n            case 'data':\r\n                acceptData(parseTagValue(tag));\r\n                continue;\r\n            case 'true':\r\n                parseTagValue(tag);\r\n                acceptBool(true);\r\n                continue;\r\n            case 'false':\r\n                parseTagValue(tag);\r\n                acceptBool(false);\r\n                continue;\r\n        }\r\n        if (/^plist/.test(tag.name)) {\r\n            continue;\r\n        }\r\n        fail('unexpected opened tag ' + tag.name);\r\n    }\r\n    return cur;\r\n}\r\n//# sourceMappingURL=main.js.map", "/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nfunction doFail(streamState: JSONStreamState, msg: string): void {\n\t// console.log('Near offset ' + streamState.pos + ': ' + msg + ' ~~~' + streamState.source.substr(streamState.pos, 50) + '~~~');\n\tthrow new Error('Near offset ' + streamState.pos + ': ' + msg + ' ~~~' + streamState.source.substr(streamState.pos, 50) + '~~~');\n}\n\nexport interface ILocation {\n\treadonly filename: string;\n\treadonly line: number;\n\treadonly char: number;\n}\n\nexport function parse(source: string, filename: string, withMetadata: boolean): any {\n\tlet streamState = new JSONStreamState(source);\n\tlet token = new JSONToken();\n\tlet state = JSONState.ROOT_STATE;\n\tlet cur: any = null;\n\tlet stateStack: JSONState[] = [];\n\tlet objStack: any[] = [];\n\n\tfunction pushState(): void {\n\t\tstateStack.push(state);\n\t\tobjStack.push(cur);\n\t}\n\n\tfunction popState(): void {\n\t\tstate = stateStack.pop();\n\t\tcur = objStack.pop();\n\t}\n\n\tfunction fail(msg: string): void {\n\t\tdoFail(streamState, msg);\n\t}\n\n\twhile (nextJSONToken(streamState, token)) {\n\n\t\tif (state === JSONState.ROOT_STATE) {\n\t\t\tif (cur !== null) {\n\t\t\t\tfail('too many constructs in root');\n\t\t\t}\n\n\t\t\tif (token.type === JSONTokenType.LEFT_CURLY_BRACKET) {\n\t\t\t\tcur = {};\n\t\t\t\tif (withMetadata) {\n\t\t\t\t\tcur.$vscodeTextmateLocation = token.toLocation(filename);\n\t\t\t\t}\n\t\t\t\tpushState();\n\t\t\t\tstate = JSONState.DICT_STATE;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (token.type === JSONTokenType.LEFT_SQUARE_BRACKET) {\n\t\t\t\tcur = [];\n\t\t\t\tpushState();\n\t\t\t\tstate = JSONState.ARR_STATE;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfail('unexpected token in root');\n\n\t\t}\n\n\t\tif (state === JSONState.DICT_STATE_COMMA) {\n\n\t\t\tif (token.type === JSONTokenType.RIGHT_CURLY_BRACKET) {\n\t\t\t\tpopState();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (token.type === JSONTokenType.COMMA) {\n\t\t\t\tstate = JSONState.DICT_STATE_NO_CLOSE;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfail('expected , or }');\n\n\t\t}\n\n\t\tif (state === JSONState.DICT_STATE || state === JSONState.DICT_STATE_NO_CLOSE) {\n\n\t\t\tif (state === JSONState.DICT_STATE && token.type === JSONTokenType.RIGHT_CURLY_BRACKET) {\n\t\t\t\tpopState();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (token.type === JSONTokenType.STRING) {\n\t\t\t\tlet keyValue = token.value;\n\n\t\t\t\tif (!nextJSONToken(streamState, token) || (/*TS bug*/<any>token.type) !== JSONTokenType.COLON) {\n\t\t\t\t\tfail('expected colon');\n\t\t\t\t}\n\t\t\t\tif (!nextJSONToken(streamState, token)) {\n\t\t\t\t\tfail('expected value');\n\t\t\t\t}\n\n\t\t\t\tstate = JSONState.DICT_STATE_COMMA;\n\n\t\t\t\tif (token.type === JSONTokenType.STRING) {\n\t\t\t\t\tcur[keyValue] = token.value;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (token.type === JSONTokenType.NULL) {\n\t\t\t\t\tcur[keyValue] = null;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (token.type === JSONTokenType.TRUE) {\n\t\t\t\t\tcur[keyValue] = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (token.type === JSONTokenType.FALSE) {\n\t\t\t\t\tcur[keyValue] = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (token.type === JSONTokenType.NUMBER) {\n\t\t\t\t\tcur[keyValue] = parseFloat(token.value);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (token.type === JSONTokenType.LEFT_SQUARE_BRACKET) {\n\t\t\t\t\tlet newArr: any[] = [];\n\t\t\t\t\tcur[keyValue] = newArr;\n\t\t\t\t\tpushState();\n\t\t\t\t\tstate = JSONState.ARR_STATE;\n\t\t\t\t\tcur = newArr;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (token.type === JSONTokenType.LEFT_CURLY_BRACKET) {\n\t\t\t\t\tlet newDict: any = {};\n\t\t\t\t\tif (withMetadata) {\n\t\t\t\t\t\tnewDict.$vscodeTextmateLocation = token.toLocation(filename);\n\t\t\t\t\t}\n\t\t\t\t\tcur[keyValue] = newDict;\n\t\t\t\t\tpushState();\n\t\t\t\t\tstate = JSONState.DICT_STATE;\n\t\t\t\t\tcur = newDict;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfail('unexpected token in dict');\n\t\t}\n\n\t\tif (state === JSONState.ARR_STATE_COMMA) {\n\n\t\t\tif (token.type === JSONTokenType.RIGHT_SQUARE_BRACKET) {\n\t\t\t\tpopState();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (token.type === JSONTokenType.COMMA) {\n\t\t\t\tstate = JSONState.ARR_STATE_NO_CLOSE;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfail('expected , or ]');\n\t\t}\n\n\t\tif (state === JSONState.ARR_STATE || state === JSONState.ARR_STATE_NO_CLOSE) {\n\n\t\t\tif (state === JSONState.ARR_STATE && token.type === JSONTokenType.RIGHT_SQUARE_BRACKET) {\n\t\t\t\tpopState();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tstate = JSONState.ARR_STATE_COMMA;\n\n\t\t\tif (token.type === JSONTokenType.STRING) {\n\t\t\t\tcur.push(token.value);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (token.type === JSONTokenType.NULL) {\n\t\t\t\tcur.push(null);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (token.type === JSONTokenType.TRUE) {\n\t\t\t\tcur.push(true);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (token.type === JSONTokenType.FALSE) {\n\t\t\t\tcur.push(false);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (token.type === JSONTokenType.NUMBER) {\n\t\t\t\tcur.push(parseFloat(token.value));\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (token.type === JSONTokenType.LEFT_SQUARE_BRACKET) {\n\t\t\t\tlet newArr: any[] = [];\n\t\t\t\tcur.push(newArr);\n\t\t\t\tpushState();\n\t\t\t\tstate = JSONState.ARR_STATE;\n\t\t\t\tcur = newArr;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (token.type === JSONTokenType.LEFT_CURLY_BRACKET) {\n\t\t\t\tlet newDict: any = {};\n\t\t\t\tif (withMetadata) {\n\t\t\t\t\tnewDict.$vscodeTextmateLocation = token.toLocation(filename);\n\t\t\t\t}\n\t\t\t\tcur.push(newDict);\n\t\t\t\tpushState();\n\t\t\t\tstate = JSONState.DICT_STATE;\n\t\t\t\tcur = newDict;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfail('unexpected token in array');\n\t\t}\n\n\t\tfail('unknown state');\n\t}\n\n\tif (objStack.length !== 0) {\n\t\tfail('unclosed constructs');\n\t}\n\n\treturn cur;\n}\n\nclass JSONStreamState {\n\tsource: string;\n\n\tpos: number;\n\tlen: number;\n\n\tline: number;\n\tchar: number;\n\n\tconstructor(source: string) {\n\t\tthis.source = source;\n\t\tthis.pos = 0;\n\t\tthis.len = source.length;\n\t\tthis.line = 1;\n\t\tthis.char = 0;\n\t}\n}\n\nconst enum JSONTokenType {\n\tUNKNOWN = 0,\n\tSTRING = 1,\n\tLEFT_SQUARE_BRACKET = 2, // [\n\tLEFT_CURLY_BRACKET = 3, // {\n\tRIGHT_SQUARE_BRACKET = 4, // ]\n\tRIGHT_CURLY_BRACKET = 5, // }\n\tCOLON = 6, // :\n\tCOMMA = 7, // ,\n\tNULL = 8,\n\tTRUE = 9,\n\tFALSE = 10,\n\tNUMBER = 11\n}\n\nconst enum JSONState {\n\tROOT_STATE = 0,\n\tDICT_STATE = 1,\n\tDICT_STATE_COMMA = 2,\n\tDICT_STATE_NO_CLOSE = 3,\n\tARR_STATE = 4,\n\tARR_STATE_COMMA = 5,\n\tARR_STATE_NO_CLOSE = 6,\n}\n\nconst enum ChCode {\n\tSPACE = 0x20,\n\tHORIZONTAL_TAB = 0x09,\n\tCARRIAGE_RETURN = 0x0D,\n\tLINE_FEED = 0x0A,\n\tQUOTATION_MARK = 0x22,\n\tBACKSLASH = 0x5C,\n\n\tLEFT_SQUARE_BRACKET = 0x5B,\n\tLEFT_CURLY_BRACKET = 0x7B,\n\tRIGHT_SQUARE_BRACKET = 0x5D,\n\tRIGHT_CURLY_BRACKET = 0x7D,\n\tCOLON = 0x3A,\n\tCOMMA = 0x2C,\n\tDOT = 0x2E,\n\n\tD0 = 0x30,\n\tD9 = 0x39,\n\n\tMINUS = 0x2D,\n\tPLUS = 0x2B,\n\n\tE = 0x45,\n\n\ta = 0x61,\n\te = 0x65,\n\tf = 0x66,\n\tl = 0x6C,\n\tn = 0x6E,\n\tr = 0x72,\n\ts = 0x73,\n\tt = 0x74,\n\tu = 0x75,\n}\n\nclass JSONToken {\n\tvalue: string;\n\ttype: JSONTokenType;\n\n\toffset: number;\n\tlen: number;\n\n\tline: number; /* 1 based line number */\n\tchar: number;\n\n\tconstructor() {\n\t\tthis.value = null;\n\t\tthis.offset = -1;\n\t\tthis.len = -1;\n\t\tthis.line = -1;\n\t\tthis.char = -1;\n\t}\n\n\ttoLocation(filename: string): ILocation {\n\t\treturn {\n\t\t\tfilename: filename,\n\t\t\tline: this.line,\n\t\t\tchar: this.char\n\t\t};\n\t}\n}\n\n/**\n * precondition: the string is known to be valid JSON (https://www.ietf.org/rfc/rfc4627.txt)\n */\nfunction nextJSONToken(_state: JSONStreamState, _out: JSONToken): boolean {\n\t_out.value = null;\n\t_out.type = JSONTokenType.UNKNOWN;\n\t_out.offset = -1;\n\t_out.len = -1;\n\t_out.line = -1;\n\t_out.char = -1;\n\n\tlet source = _state.source;\n\tlet pos = _state.pos;\n\tlet len = _state.len;\n\tlet line = _state.line;\n\tlet char = _state.char;\n\n\t//------------------------ skip whitespace\n\tlet chCode: number;\n\tdo {\n\t\tif (pos >= len) {\n\t\t\treturn false; /*EOS*/\n\t\t}\n\n\t\tchCode = source.charCodeAt(pos);\n\t\tif (chCode === ChCode.SPACE || chCode === ChCode.HORIZONTAL_TAB || chCode === ChCode.CARRIAGE_RETURN) {\n\t\t\t// regular whitespace\n\t\t\tpos++; char++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (chCode === ChCode.LINE_FEED) {\n\t\t\t// newline\n\t\t\tpos++; line++; char = 0;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// not whitespace\n\t\tbreak;\n\t} while (true);\n\n\t_out.offset = pos;\n\t_out.line = line;\n\t_out.char = char;\n\n\tif (chCode === ChCode.QUOTATION_MARK) {\n\t\t//------------------------ strings\n\t\t_out.type = JSONTokenType.STRING;\n\n\t\tpos++; char++;\n\n\t\tdo {\n\t\t\tif (pos >= len) {\n\t\t\t\treturn false; /*EOS*/\n\t\t\t}\n\n\t\t\tchCode = source.charCodeAt(pos);\n\t\t\tpos++; char++;\n\n\t\t\tif (chCode === ChCode.BACKSLASH) {\n\t\t\t\t// skip next char\n\t\t\t\tpos++; char++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (chCode === ChCode.QUOTATION_MARK) {\n\t\t\t\t// end of the string\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} while (true);\n\n\t\t_out.value = source.substring(_out.offset + 1, pos - 1).replace(/\\\\u([0-9A-Fa-f]{4})/g, (_, m0) => {\n\t\t\treturn (<any>String).fromCodePoint(parseInt(m0, 16));\n\t\t}).replace(/\\\\(.)/g, (_, m0) => {\n\t\t\tswitch (m0) {\n\t\t\t\tcase '\"': return '\"';\n\t\t\t\tcase '\\\\': return '\\\\';\n\t\t\t\tcase '/': return '/';\n\t\t\t\tcase 'b': return '\\b';\n\t\t\t\tcase 'f': return '\\f';\n\t\t\t\tcase 'n': return '\\n';\n\t\t\t\tcase 'r': return '\\r';\n\t\t\t\tcase 't': return '\\t';\n\t\t\t\tdefault: doFail(_state, 'invalid escape sequence');\n\t\t\t}\n\t\t});\n\n\t} else if (chCode === ChCode.LEFT_SQUARE_BRACKET) {\n\n\t\t_out.type = JSONTokenType.LEFT_SQUARE_BRACKET;\n\t\tpos++; char++;\n\n\t} else if (chCode === ChCode.LEFT_CURLY_BRACKET) {\n\n\t\t_out.type = JSONTokenType.LEFT_CURLY_BRACKET;\n\t\tpos++; char++;\n\n\t} else if (chCode === ChCode.RIGHT_SQUARE_BRACKET) {\n\n\t\t_out.type = JSONTokenType.RIGHT_SQUARE_BRACKET;\n\t\tpos++; char++;\n\n\t} else if (chCode === ChCode.RIGHT_CURLY_BRACKET) {\n\n\t\t_out.type = JSONTokenType.RIGHT_CURLY_BRACKET;\n\t\tpos++; char++;\n\n\t} else if (chCode === ChCode.COLON) {\n\n\t\t_out.type = JSONTokenType.COLON;\n\t\tpos++; char++;\n\n\t} else if (chCode === ChCode.COMMA) {\n\n\t\t_out.type = JSONTokenType.COMMA;\n\t\tpos++; char++;\n\n\t} else if (chCode === ChCode.n) {\n\t\t//------------------------ null\n\n\t\t_out.type = JSONTokenType.NULL;\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.u) { return false; /* INVALID */ }\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.l) { return false; /* INVALID */ }\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.l) { return false; /* INVALID */ }\n\t\tpos++; char++;\n\n\t} else if (chCode === ChCode.t) {\n\t\t//------------------------ true\n\n\t\t_out.type = JSONTokenType.TRUE;\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.r) { return false; /* INVALID */ }\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.u) { return false; /* INVALID */ }\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.e) { return false; /* INVALID */ }\n\t\tpos++; char++;\n\n\t} else if (chCode === ChCode.f) {\n\t\t//------------------------ false\n\n\t\t_out.type = JSONTokenType.FALSE;\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.a) { return false; /* INVALID */ }\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.l) { return false; /* INVALID */ }\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.s) { return false; /* INVALID */ }\n\t\tpos++; char++; chCode = source.charCodeAt(pos);\n\t\tif (chCode !== ChCode.e) { return false; /* INVALID */ }\n\t\tpos++; char++;\n\n\t} else {\n\t\t//------------------------ numbers\n\n\t\t_out.type = JSONTokenType.NUMBER;\n\t\tdo {\n\t\t\tif (pos >= len) { return false; /*EOS*/ }\n\n\t\t\tchCode = source.charCodeAt(pos);\n\t\t\tif (\n\t\t\t\tchCode === ChCode.DOT\n\t\t\t\t|| (chCode >= ChCode.D0 && chCode <= ChCode.D9)\n\t\t\t\t|| (chCode === ChCode.e || chCode === ChCode.E)\n\t\t\t\t|| (chCode === ChCode.MINUS || chCode === ChCode.PLUS)\n\t\t\t) {\n\t\t\t\t// looks like a piece of a number\n\t\t\t\tpos++; char++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// pos--; char--;\n\t\t\tbreak;\n\t\t} while (true);\n\t}\n\n\t_out.len = pos - _out.offset;\n\tif (_out.value === null) {\n\t\t_out.value = source.substr(_out.offset, _out.len);\n\t}\n\n\t_state.pos = pos;\n\t_state.line = line;\n\t_state.char = char;\n\n\t// console.log('PRODUCING TOKEN: ', _out.value, JSONTokenType[_out.type]);\n\n\treturn true;\n}\n", "/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nimport { IRawGrammar } from './types';\nimport * as plist from 'fast-plist';\nimport { CAPTURE_METADATA } from './debug';\nimport { parse as manualParseJSON } from './json';\n\nexport function parseJSONGrammar(contents: string, filename: string): IRawGrammar {\n\tif (CAPTURE_METADATA) {\n\t\treturn <IRawGrammar>manualParseJSON(contents, filename, true);\n\t}\n\treturn <IRawGrammar>JSON.parse(contents);\n}\n\nexport function parsePLISTGrammar(contents: string, filename: string): IRawGrammar {\n\tif (CAPTURE_METADATA) {\n\t\treturn <IRawGrammar>plist.parseWithLocation(contents, filename, '$vscodeTextmateLocation');\n\t}\n\treturn <IRawGrammar>plist.parse(contents);\n}\n", "/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nimport { IRawTheme } from './main';\n\nexport const enum FontStyle {\n\tNotSet = -1,\n\tNone = 0,\n\tItalic = 1,\n\tBold = 2,\n\tUnderline = 4\n}\n\nexport class ParsedThemeRule {\n\t_parsedThemeRuleBrand: void;\n\n\treadonly scope: string;\n\treadonly parentScopes: string[];\n\treadonly index: number;\n\n\t/**\n\t * -1 if not set. An or mask of `FontStyle` otherwise.\n\t */\n\treadonly fontStyle: number;\n\treadonly foreground: string;\n\treadonly background: string;\n\n\tconstructor(\n\t\tscope: string,\n\t\tparentScopes: string[],\n\t\tindex: number,\n\t\tfontStyle: number,\n\t\tforeground: string,\n\t\tbackground: string,\n\t) {\n\t\tthis.scope = scope;\n\t\tthis.parentScopes = parentScopes;\n\t\tthis.index = index;\n\t\tthis.fontStyle = fontStyle;\n\t\tthis.foreground = foreground;\n\t\tthis.background = background;\n\t}\n}\n\nfunction isValidHexColor(hex: string): boolean {\n\tif (/^#[0-9a-f]{6}$/i.test(hex)) {\n\t\t// #rrggbb\n\t\treturn true;\n\t}\n\n\tif (/^#[0-9a-f]{8}$/i.test(hex)) {\n\t\t// #rrggbbaa\n\t\treturn true;\n\t}\n\n\tif (/^#[0-9a-f]{3}$/i.test(hex)) {\n\t\t// #rgb\n\t\treturn true;\n\t}\n\n\tif (/^#[0-9a-f]{4}$/i.test(hex)) {\n\t\t// #rgba\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * Parse a raw theme into rules.\n */\nexport function parseTheme(source: IRawTheme): ParsedThemeRule[] {\n\tif (!source) {\n\t\treturn [];\n\t}\n\tif (!source.settings || !Array.isArray(source.settings)) {\n\t\treturn [];\n\t}\n\tlet settings = source.settings;\n\tlet result: ParsedThemeRule[] = [], resultLen = 0;\n\tfor (let i = 0, len = settings.length; i < len; i++) {\n\t\tlet entry = settings[i];\n\n\t\tif (!entry.settings) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet scopes: string[];\n\t\tif (typeof entry.scope === 'string') {\n\t\t\tlet _scope = entry.scope;\n\n\t\t\t// remove leading commas\n\t\t\t_scope = _scope.replace(/^[,]+/, '');\n\n\t\t\t// remove trailing commans\n\t\t\t_scope = _scope.replace(/[,]+$/, '');\n\n\t\t\tscopes = _scope.split(',');\n\t\t} else if (Array.isArray(entry.scope)) {\n\t\t\tscopes = entry.scope;\n\t\t} else {\n\t\t\tscopes = [''];\n\t\t}\n\n\t\tlet fontStyle: number = FontStyle.NotSet;\n\t\tif (typeof entry.settings.fontStyle === 'string') {\n\t\t\tfontStyle = FontStyle.None;\n\n\t\t\tlet segments = entry.settings.fontStyle.split(' ');\n\t\t\tfor (let j = 0, lenJ = segments.length; j < lenJ; j++) {\n\t\t\t\tlet segment = segments[j];\n\t\t\t\tswitch (segment) {\n\t\t\t\t\tcase 'italic':\n\t\t\t\t\t\tfontStyle = fontStyle | FontStyle.Italic;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bold':\n\t\t\t\t\t\tfontStyle = fontStyle | FontStyle.Bold;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'underline':\n\t\t\t\t\t\tfontStyle = fontStyle | FontStyle.Underline;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet foreground: string = null;\n\t\tif (typeof entry.settings.foreground === 'string' && isValidHexColor(entry.settings.foreground)) {\n\t\t\tforeground = entry.settings.foreground;\n\t\t}\n\n\t\tlet background: string = null;\n\t\tif (typeof entry.settings.background === 'string' && isValidHexColor(entry.settings.background)) {\n\t\t\tbackground = entry.settings.background;\n\t\t}\n\n\t\tfor (let j = 0, lenJ = scopes.length; j < lenJ; j++) {\n\t\t\tlet _scope = scopes[j].trim();\n\n\t\t\tlet segments = _scope.split(' ');\n\n\t\t\tlet scope = segments[segments.length - 1];\n\t\t\tlet parentScopes: string[] = null;\n\t\t\tif (segments.length > 1) {\n\t\t\t\tparentScopes = segments.slice(0, segments.length - 1);\n\t\t\t\tparentScopes.reverse();\n\t\t\t}\n\n\t\t\tresult[resultLen++] = new ParsedThemeRule(\n\t\t\t\tscope,\n\t\t\t\tparentScopes,\n\t\t\t\ti,\n\t\t\t\tfontStyle,\n\t\t\t\tforeground,\n\t\t\t\tbackground\n\t\t\t);\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Resolve rules (i.e. inheritance).\n */\nfunction resolveParsedThemeRules(parsedThemeRules: ParsedThemeRule[]): Theme {\n\n\t// Sort rules lexicographically, and then by index if necessary\n\tparsedThemeRules.sort((a, b) => {\n\t\tlet r = strcmp(a.scope, b.scope);\n\t\tif (r !== 0) {\n\t\t\treturn r;\n\t\t}\n\t\tr = strArrCmp(a.parentScopes, b.parentScopes);\n\t\tif (r !== 0) {\n\t\t\treturn r;\n\t\t}\n\t\treturn a.index - b.index;\n\t});\n\n\t// Determine defaults\n\tlet defaultFontStyle = FontStyle.None;\n\tlet defaultForeground = '#000000';\n\tlet defaultBackground = '#ffffff';\n\twhile (parsedThemeRules.length >= 1 && parsedThemeRules[0].scope === '') {\n\t\tlet incomingDefaults = parsedThemeRules.shift();\n\t\tif (incomingDefaults.fontStyle !== FontStyle.NotSet) {\n\t\t\tdefaultFontStyle = incomingDefaults.fontStyle;\n\t\t}\n\t\tif (incomingDefaults.foreground !== null) {\n\t\t\tdefaultForeground = incomingDefaults.foreground;\n\t\t}\n\t\tif (incomingDefaults.background !== null) {\n\t\t\tdefaultBackground = incomingDefaults.background;\n\t\t}\n\t}\n\tlet colorMap = new ColorMap();\n\tlet defaults = new ThemeTrieElementRule(0, null, defaultFontStyle, colorMap.getId(defaultForeground), colorMap.getId(defaultBackground));\n\n\tlet root = new ThemeTrieElement(new ThemeTrieElementRule(0, null, FontStyle.NotSet, 0, 0), []);\n\tfor (let i = 0, len = parsedThemeRules.length; i < len; i++) {\n\t\tlet rule = parsedThemeRules[i];\n\t\troot.insert(0, rule.scope, rule.parentScopes, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\n\t}\n\n\treturn new Theme(colorMap, defaults, root);\n}\n\nexport class ColorMap {\n\n\tprivate _lastColorId: number;\n\tprivate _id2color: string[];\n\tprivate _color2id: { [color: string]: number; };\n\n\tconstructor() {\n\t\tthis._lastColorId = 0;\n\t\tthis._id2color = [];\n\t\tthis._color2id = Object.create(null);\n\t}\n\n\tpublic getId(color: string): number {\n\t\tif (color === null) {\n\t\t\treturn 0;\n\t\t}\n\t\tcolor = color.toUpperCase();\n\t\tlet value = this._color2id[color];\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t\tvalue = ++this._lastColorId;\n\t\tthis._color2id[color] = value;\n\t\tthis._id2color[value] = color;\n\t\treturn value;\n\t}\n\n\tpublic getColorMap(): string[] {\n\t\treturn this._id2color.slice(0);\n\t}\n\n}\n\nexport class Theme {\n\n\tpublic static createFromRawTheme(source: IRawTheme): Theme {\n\t\treturn this.createFromParsedTheme(parseTheme(source));\n\t}\n\n\tpublic static createFromParsedTheme(source: ParsedThemeRule[]): Theme {\n\t\treturn resolveParsedThemeRules(source);\n\t}\n\n\tprivate readonly _colorMap: ColorMap;\n\tprivate readonly _root: ThemeTrieElement;\n\tprivate readonly _defaults: ThemeTrieElementRule;\n\tprivate readonly _cache: { [scopeName: string]: ThemeTrieElementRule[]; };\n\n\tconstructor(colorMap: ColorMap, defaults: ThemeTrieElementRule, root: ThemeTrieElement) {\n\t\tthis._colorMap = colorMap;\n\t\tthis._root = root;\n\t\tthis._defaults = defaults;\n\t\tthis._cache = {};\n\t}\n\n\tpublic getColorMap(): string[] {\n\t\treturn this._colorMap.getColorMap();\n\t}\n\n\tpublic getDefaults(): ThemeTrieElementRule {\n\t\treturn this._defaults;\n\t}\n\n\tpublic match(scopeName: string): ThemeTrieElementRule[] {\n\t\tif (!this._cache.hasOwnProperty(scopeName)) {\n\t\t\tthis._cache[scopeName] = this._root.match(scopeName);\n\t\t}\n\t\treturn this._cache[scopeName];\n\t}\n}\n\nexport function strcmp(a: string, b: string): number {\n\tif (a < b) {\n\t\treturn -1;\n\t}\n\tif (a > b) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\n\nexport function strArrCmp(a: string[], b: string[]): number {\n\tif (a === null && b === null) {\n\t\treturn 0;\n\t}\n\tif (!a) {\n\t\treturn -1;\n\t}\n\tif (!b) {\n\t\treturn 1;\n\t}\n\tlet len1 = a.length;\n\tlet len2 = b.length;\n\tif (len1 === len2) {\n\t\tfor (let i = 0; i < len1; i++) {\n\t\t\tlet res = strcmp(a[i], b[i]);\n\t\t\tif (res !== 0) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\treturn len1 - len2;\n}\n\nexport class ThemeTrieElementRule {\n\t_themeTrieElementRuleBrand: void;\n\n\tscopeDepth: number;\n\tparentScopes: string[];\n\tfontStyle: number;\n\tforeground: number;\n\tbackground: number;\n\n\tconstructor(scopeDepth: number, parentScopes: string[], fontStyle: number, foreground: number, background: number) {\n\t\tthis.scopeDepth = scopeDepth;\n\t\tthis.parentScopes = parentScopes;\n\t\tthis.fontStyle = fontStyle;\n\t\tthis.foreground = foreground;\n\t\tthis.background = background;\n\t}\n\n\tpublic clone(): ThemeTrieElementRule {\n\t\treturn new ThemeTrieElementRule(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);\n\t}\n\n\tpublic static cloneArr(arr:ThemeTrieElementRule[]): ThemeTrieElementRule[] {\n\t\tlet r: ThemeTrieElementRule[] = [];\n\t\tfor (let i = 0, len = arr.length; i < len; i++) {\n\t\t\tr[i] = arr[i].clone();\n\t\t}\n\t\treturn r;\n\t}\n\n\tpublic acceptOverwrite(scopeDepth: number, fontStyle: number, foreground: number, background: number): void {\n\t\tif (this.scopeDepth > scopeDepth) {\n\t\t\tconsole.log('how did this happen?');\n\t\t} else {\n\t\t\tthis.scopeDepth = scopeDepth;\n\t\t}\n\t\t// console.log('TODO -> my depth: ' + this.scopeDepth + ', overwriting depth: ' + scopeDepth);\n\t\tif (fontStyle !== FontStyle.NotSet) {\n\t\t\tthis.fontStyle = fontStyle;\n\t\t}\n\t\tif (foreground !== 0) {\n\t\t\tthis.foreground = foreground;\n\t\t}\n\t\tif (background !== 0) {\n\t\t\tthis.background = background;\n\t\t}\n\t}\n}\n\nexport interface ITrieChildrenMap {\n\t[segment: string]: ThemeTrieElement;\n}\n\nexport class ThemeTrieElement {\n\t_themeTrieElementBrand: void;\n\n\tprivate readonly _mainRule: ThemeTrieElementRule;\n\tprivate readonly _rulesWithParentScopes: ThemeTrieElementRule[];\n\tprivate readonly _children: ITrieChildrenMap;\n\n\tconstructor(\n\t\tmainRule: ThemeTrieElementRule,\n\t\trulesWithParentScopes: ThemeTrieElementRule[] = [],\n\t\tchildren: ITrieChildrenMap = {}\n\t) {\n\t\tthis._mainRule = mainRule;\n\t\tthis._rulesWithParentScopes = rulesWithParentScopes;\n\t\tthis._children = children;\n\t}\n\n\tprivate static _sortBySpecificity(arr: ThemeTrieElementRule[]): ThemeTrieElementRule[] {\n\t\tif (arr.length === 1) {\n\t\t\treturn arr;\n\t\t}\n\n\t\tarr.sort(this._cmpBySpecificity);\n\n\t\treturn arr;\n\t}\n\n\tprivate static _cmpBySpecificity(a: ThemeTrieElementRule, b: ThemeTrieElementRule): number {\n\t\tif (a.scopeDepth === b.scopeDepth) {\n\t\t\tconst aParentScopes = a.parentScopes;\n\t\t\tconst bParentScopes = b.parentScopes;\n\t\t\tlet aParentScopesLen = aParentScopes === null ? 0 : aParentScopes.length;\n\t\t\tlet bParentScopesLen = bParentScopes === null ? 0 : bParentScopes.length;\n\t\t\tif (aParentScopesLen === bParentScopesLen) {\n\t\t\t\tfor (let i = 0; i < aParentScopesLen; i++) {\n\t\t\t\t\tconst aLen = aParentScopes[i].length;\n\t\t\t\t\tconst bLen = bParentScopes[i].length;\n\t\t\t\t\tif (aLen !== bLen) {\n\t\t\t\t\t\treturn bLen - aLen;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn bParentScopesLen - aParentScopesLen;\n\t\t}\n\t\treturn b.scopeDepth - a.scopeDepth;\n\t}\n\n\tpublic match(scope: string): ThemeTrieElementRule[] {\n\t\tif (scope === '') {\n\t\t\treturn ThemeTrieElement._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));\n\t\t}\n\n\t\tlet dotIndex = scope.indexOf('.');\n\t\tlet head: string;\n\t\tlet tail: string;\n\t\tif (dotIndex === -1) {\n\t\t\thead = scope;\n\t\t\ttail = '';\n\t\t} else {\n\t\t\thead = scope.substring(0, dotIndex);\n\t\t\ttail = scope.substring(dotIndex + 1);\n\t\t}\n\n\t\tif (this._children.hasOwnProperty(head)) {\n\t\t\treturn this._children[head].match(tail);\n\t\t}\n\n\t\treturn ThemeTrieElement._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));\n\t}\n\n\tpublic insert(scopeDepth: number, scope: string, parentScopes: string[], fontStyle: number, foreground: number, background: number): void {\n\t\tif (scope === '') {\n\t\t\tthis._doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background);\n\t\t\treturn;\n\t\t}\n\n\t\tlet dotIndex = scope.indexOf('.');\n\t\tlet head: string;\n\t\tlet tail: string;\n\t\tif (dotIndex === -1) {\n\t\t\thead = scope;\n\t\t\ttail = '';\n\t\t} else {\n\t\t\thead = scope.substring(0, dotIndex);\n\t\t\ttail = scope.substring(dotIndex + 1);\n\t\t}\n\n\t\tlet child: ThemeTrieElement;\n\t\tif (this._children.hasOwnProperty(head)) {\n\t\t\tchild = this._children[head];\n\t\t} else {\n\t\t\tchild = new ThemeTrieElement(this._mainRule.clone(), ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes));\n\t\t\tthis._children[head] = child;\n\t\t}\n\n\t\tchild.insert(scopeDepth + 1, tail, parentScopes, fontStyle, foreground, background);\n\t}\n\n\tprivate _doInsertHere(scopeDepth: number, parentScopes: string[], fontStyle: number, foreground: number, background: number): void {\n\n\t\tif (parentScopes === null) {\n\t\t\t// Merge into the main rule\n\t\t\tthis._mainRule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n\t\t\treturn;\n\t\t}\n\n\t\t// Try to merge into existing rule\n\t\tfor (let i = 0, len = this._rulesWithParentScopes.length; i < len; i++) {\n\t\t\tlet rule = this._rulesWithParentScopes[i];\n\n\t\t\tif (strArrCmp(rule.parentScopes, parentScopes) === 0) {\n\t\t\t\t// bingo! => we get to merge this into an existing one\n\t\t\t\trule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\t// Must add a new rule\n\n\t\t// Inherit from main rule\n\t\tif (fontStyle === FontStyle.NotSet) {\n\t\t\tfontStyle = this._mainRule.fontStyle;\n\t\t}\n\t\tif (foreground === 0) {\n\t\t\tforeground = this._mainRule.foreground;\n\t\t}\n\t\tif (background === 0) {\n\t\t\tbackground = this._mainRule.background;\n\t\t}\n\n\t\tthis._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth, parentScopes, fontStyle, foreground, background));\n\t}\n}\n", "/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\n\nimport { SyncRegistry } from './registry';\nimport { parseJSONGrammar, parsePLISTGrammar } from './grammarReader';\nimport { Theme } from './theme';\nimport { StackElement as StackElementImpl } from './grammar';\nimport { IGrammarDefinition, IRawGrammar } from './types';\n\nexport { IGrammarDefinition, IRawGrammar }\n\nlet DEFAULT_OPTIONS: RegistryOptions = {\n\tgetGrammarDefinition: (scopeName: string) => null,\n\tgetInjections: (scopeName: string) => null\n};\n\n/**\n * A single theme setting.\n */\nexport interface IRawThemeSetting {\n\treadonly name?: string;\n\treadonly scope?: string | string[];\n\treadonly settings: {\n\t\treadonly fontStyle?: string;\n\t\treadonly foreground?: string;\n\t\treadonly background?: string;\n\t};\n}\n\n/**\n * A TextMate theme.\n */\nexport interface IRawTheme {\n\treadonly name?: string;\n\treadonly settings: IRawThemeSetting[];\n}\n\n/**\n * A registry helper that can locate grammar file paths given scope names.\n */\nexport interface RegistryOptions {\n\ttheme?: IRawTheme;\n\tgetGrammarDefinition(scopeName: string, dependentScope: string): Promise<IGrammarDefinition>;\n\tgetInjections?(scopeName: string): string[];\n}\n\n/**\n * A map from scope name to a language id. Please do not use language id 0.\n */\nexport interface IEmbeddedLanguagesMap {\n\t[scopeName: string]: number;\n}\n\n/**\n * A map from selectors to token types.\n */\nexport interface ITokenTypeMap {\n\t[selector: string]: StandardTokenType;\n}\n\nexport const enum StandardTokenType {\n\tOther = 0,\n\tComment = 1,\n\tString = 2,\n\tRegEx = 4\n}\n\nexport interface IGrammarConfiguration {\n\tembeddedLanguages?: IEmbeddedLanguagesMap;\n\ttokenTypes?: ITokenTypeMap;\n}\n\n/**\n * The registry that will hold all grammars.\n */\nexport class Registry {\n\n\tprivate readonly _locator: RegistryOptions;\n\tprivate readonly _syncRegistry: SyncRegistry;\n\tprivate readonly installationQueue: Map<string, Promise<IGrammar>>;\n\n\tconstructor(locator: RegistryOptions = DEFAULT_OPTIONS) {\n\t\tthis._locator = locator;\n\t\tthis._syncRegistry = new SyncRegistry(Theme.createFromRawTheme(locator.theme));\n\t\tthis.installationQueue = new Map();\n\t}\n\n\t/**\n\t * Change the theme. Once called, no previous `ruleStack` should be used anymore.\n\t */\n\tpublic setTheme(theme: IRawTheme): void {\n\t\tthis._syncRegistry.setTheme(Theme.createFromRawTheme(theme));\n\t}\n\n\t/**\n\t * Returns a lookup array for color ids.\n\t */\n\tpublic getColorMap(): string[] {\n\t\treturn this._syncRegistry.getColorMap();\n\t}\n\n\t/**\n\t * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n\t * Please do not use language id 0.\n\t */\n\tpublic loadGrammarWithEmbeddedLanguages(initialScopeName: string, initialLanguage: number, embeddedLanguages: IEmbeddedLanguagesMap): Promise<IGrammar> {\n\t\treturn this.loadGrammarWithConfiguration(initialScopeName, initialLanguage, { embeddedLanguages });\n\t}\n\n\t/**\n\t * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n\t * Please do not use language id 0.\n\t */\n\tpublic async loadGrammarWithConfiguration(initialScopeName: string, initialLanguage: number, configuration: IGrammarConfiguration): Promise<IGrammar> {\n\t\tawait this._loadGrammar(initialScopeName);\n\t\treturn this.grammarForScopeName(initialScopeName, initialLanguage, configuration.embeddedLanguages, configuration.tokenTypes);\n\t}\n\n\t/**\n\t * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n\t */\n\tpublic async loadGrammar(initialScopeName: string): Promise<IGrammar> {\n\t\treturn this._loadGrammar(initialScopeName);\n\t}\n\n\tprivate async _loadGrammar(initialScopeName: string, dependentScope: string = null): Promise<IGrammar> {\n\n\t\t// already installed\n\t\tif (this._syncRegistry.lookup(initialScopeName)) {\n\t\t\treturn this.grammarForScopeName(initialScopeName);\n\t\t}\n\t\t// installation in progress\n\t\tif (this.installationQueue.has(initialScopeName)) {\n\t\t\treturn this.installationQueue.get(initialScopeName);\n\t\t}\n\t\t// start installation process\n\t\tconst prom = new Promise<IGrammar>(async (resolve, reject) => {\n\t\t\tlet grammarDefinition = await this._locator.getGrammarDefinition(initialScopeName, dependentScope);\n\t\t\tif (!grammarDefinition) {\n\t\t\t\tthrow new Error(`A tmGrammar load was requested but registry host failed to provide grammar definition`);\n\t\t\t}\n\t\t\tif ((grammarDefinition.format !== 'json' && grammarDefinition.format !== 'plist') ||\n\t\t\t\t(grammarDefinition.format === 'json' && typeof grammarDefinition.content !== 'object' && typeof grammarDefinition.content !== 'string') ||\n\t\t\t\t(grammarDefinition.format === 'plist' && typeof grammarDefinition.content !== 'string')\n\t\t\t) {\n\t\t\t\tthrow new TypeError('Grammar definition must be an object, either `{ content: string | object, format: \"json\" }` OR `{ content: string, format: \"plist\" }`)');\n\t\t\t}\n\t\t\tconst rawGrammar: IRawGrammar = grammarDefinition.format === 'json'\n\t\t\t\t? typeof grammarDefinition.content === 'string'\n\t\t\t\t\t? parseJSONGrammar(grammarDefinition.content, 'c://fakepath/grammar.json')\n\t\t\t\t\t: grammarDefinition.content as IRawGrammar\n\t\t\t\t: parsePLISTGrammar(grammarDefinition.content as string, 'c://fakepath/grammar.plist');\n\t\t\tlet injections = (typeof this._locator.getInjections === 'function') && this._locator.getInjections(initialScopeName);\n\n\t\t\t(rawGrammar as any).scopeName = initialScopeName;\n\t\t\tlet deps = this._syncRegistry.addGrammar(rawGrammar, injections);\n\t\t\tawait Promise.all(deps.map(async (scopeNameD) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn this._loadGrammar(scopeNameD, initialScopeName);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new Error(`While trying to load tmGrammar with scopeId: '${initialScopeName}', it's dependency (scopeId: ${scopeNameD}) loading errored: ${error.message}`);\n\t\t\t\t}\n\t\t\t}));\n\t\t\tresolve(this.grammarForScopeName(initialScopeName));\n\t\t});\n\t\tthis.installationQueue.set(initialScopeName, prom);\n\t\tawait prom;\n\t\tthis.installationQueue.delete(initialScopeName);\n\t\treturn prom;\n\t}\n\n\t/**\n\t * Get the grammar for `scopeName`. The grammar must first be created via `loadGrammar` or `loadGrammarFromPathSync`.\n\t */\n\tpublic grammarForScopeName(scopeName: string, initialLanguage: number = 0, embeddedLanguages: IEmbeddedLanguagesMap = null, tokenTypes: ITokenTypeMap = null): IGrammar {\n\t\treturn this._syncRegistry.grammarForScopeName(scopeName, initialLanguage, embeddedLanguages, tokenTypes);\n\t}\n}\n\n/**\n * A grammar\n */\nexport interface IGrammar {\n\t/**\n\t * Tokenize `lineText` using previous line state `prevState`.\n\t */\n\ttokenizeLine(lineText: string, prevState: StackElement): ITokenizeLineResult;\n\n\t/**\n\t * Tokenize `lineText` using previous line state `prevState`.\n\t * The result contains the tokens in binary format, resolved with the following information:\n\t *  - language\n\t *  - token type (regex, string, comment, other)\n\t *  - font style\n\t *  - foreground color\n\t *  - background color\n\t * e.g. for getting the languageId: `(metadata & MetadataConsts.LANGUAGEID_MASK) >>> MetadataConsts.LANGUAGEID_OFFSET`\n\t */\n\ttokenizeLine2(lineText: string, prevState: StackElement): ITokenizeLineResult2;\n}\n\nexport interface ITokenizeLineResult {\n\treadonly tokens: IToken[];\n\t/**\n\t * The `prevState` to be passed on to the next line tokenization.\n\t */\n\treadonly ruleStack: StackElement;\n}\n\n/**\n * Helpers to manage the \"collapsed\" metadata of an entire StackElement stack.\n * The following assumptions have been made:\n *  - languageId < 256 => needs 8 bits\n *  - unique color count < 512 => needs 9 bits\n *\n * The binary format is:\n * - -------------------------------------------\n *     3322 2222 2222 1111 1111 1100 0000 0000\n *     1098 7654 3210 9876 5432 1098 7654 3210\n * - -------------------------------------------\n *     xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx\n *     bbbb bbbb bfff ffff ffFF FTTT LLLL LLLL\n * - -------------------------------------------\n *  - L = LanguageId (8 bits)\n *  - T = StandardTokenType (3 bits)\n *  - F = FontStyle (3 bits)\n *  - f = foreground color (9 bits)\n *  - b = background color (9 bits)\n */\nexport const enum MetadataConsts {\n\tLANGUAGEID_MASK = 0b00000000000000000000000011111111,\n\tTOKEN_TYPE_MASK = 0b00000000000000000000011100000000,\n\tFONT_STYLE_MASK = 0b00000000000000000011100000000000,\n\tFOREGROUND_MASK = 0b00000000011111111100000000000000,\n\tBACKGROUND_MASK = 0b11111111100000000000000000000000,\n\n\tLANGUAGEID_OFFSET = 0,\n\tTOKEN_TYPE_OFFSET = 8,\n\tFONT_STYLE_OFFSET = 11,\n\tFOREGROUND_OFFSET = 14,\n\tBACKGROUND_OFFSET = 23\n}\n\nexport interface ITokenizeLineResult2 {\n\t/**\n\t * The tokens in binary format. Each token occupies two array indices. For token i:\n\t *  - at offset 2*i => startIndex\n\t *  - at offset 2*i + 1 => metadata\n\t *\n\t */\n\treadonly tokens: Uint32Array;\n\t/**\n\t * The `prevState` to be passed on to the next line tokenization.\n\t */\n\treadonly ruleStack: StackElement;\n}\n\nexport interface IToken {\n\tstartIndex: number;\n\treadonly endIndex: number;\n\treadonly scopes: string[];\n}\n\n/**\n * **IMPORTANT** - Immutable!\n */\nexport interface StackElement {\n\t_stackElementBrand: void;\n\treadonly depth: number;\n\n\tclone(): StackElement;\n\tequals(other: StackElement): boolean;\n}\n\nexport const INITIAL: StackElement = StackElementImpl.NULL;\n", "import * as monacoNsps from 'monaco-editor'\n\n// as described in issue: https://github.com/NeekSandhu/monaco-textmate/issues/5\nexport const TMToMonacoToken = (editor: monacoNsps.editor.ICodeEditor, scopes: string[]) => {\n    let scopeName = \"\";\n    // get the scope name. Example: cpp , java, haskell\n    for (let i = scopes[0].length - 1; i >= 0; i -= 1) {\n        const char = scopes[0][i];\n        if (char === \".\") {\n            break;\n        }\n        scopeName = char + scopeName;\n    }\n\n    // iterate through all scopes from last to first\n    for (let i = scopes.length - 1; i >= 0; i -= 1) {\n        const scope = scopes[i];\n\n        /**\n         * Try all possible tokens from high specific token to low specific token\n         *\n         * Example:\n         * 0 meta.function.definition.parameters.cpp\n         * 1 meta.function.definition.parameters\n         *\n         * 2 meta.function.definition.cpp\n         * 3 meta.function.definition\n         *\n         * 4 meta.function.cpp\n         * 5 meta.function\n         *\n         * 6 meta.cpp\n         * 7 meta\n         */\n        for (let i = scope.length - 1; i >= 0; i -= 1) {\n            const char = scope[i];\n            if (char === \".\") {\n                const token = scope.slice(0, i);\n                if (\n                    editor['_themeService']._theme._tokenTheme._match(token + \".\" + scopeName)._foreground >\n                    1\n                ) {\n                    return token + \".\" + scopeName;\n                }\n                if (editor[\"_themeService\"]._theme._tokenTheme._match(token)._foreground > 1) {\n                  return token;\n                }\n            }\n        }\n    }\n\n    return \"\";\n};\n", "import { Registry, StackElement, INITIAL } from 'monaco-textmate'\nimport * as monacoNsps from 'monaco-editor'\nimport { TMToMonacoToken } from './tm-to-monaco-token';\n\nclass TokenizerState implements monacoNsps.languages.IState {\n\n    constructor(\n        private _ruleStack: StackElement\n    ) { }\n\n    public get ruleStack(): StackElement {\n        return this._ruleStack\n    }\n\n    public clone(): TokenizerState {\n        return new TokenizerState(this._ruleStack);\n    }\n\n    public equals(other: monacoNsps.languages.IState): boolean {\n        if (!other ||\n            !(other instanceof TokenizerState) ||\n            other !== this ||\n            other._ruleStack !== this._ruleStack\n        ) {\n            return false;\n        }\n        return true;\n    }\n}\n\n/**\n * Wires up monaco-editor with monaco-textmate\n *\n * @param monaco monaco namespace this operation should apply to (usually the `monaco` global unless you have some other setup)\n * @param registry TmGrammar `Registry` this wiring should rely on to provide the grammars\n * @param languages `Map` of language ids (string) to TM names (string)\n */\nexport function wireTmGrammars(monaco: typeof monacoNsps, registry: Registry, languages: Map<string, string>, editor?: monacoNsps.editor.ICodeEditor) {\n    return Promise.all(\n        Array.from(languages.keys())\n            .map(async (languageId) => {\n                const grammar = await registry.loadGrammar(languages.get(languageId))\n                monaco.languages.setTokensProvider(languageId, {\n                    getInitialState: () => new TokenizerState(INITIAL),\n                    tokenize: (line: string, state: TokenizerState) => {\n                        const res = grammar.tokenizeLine(line, state.ruleStack)\n                        return {\n                            endState: new TokenizerState(res.ruleStack),\n                            tokens: res.tokens.map(token => ({\n                                ...token,\n                                // TODO: At the moment, monaco-editor doesn't seem to accept array of scopes\n                                scopes: editor ? TMToMonacoToken(editor, token.scopes) : token.scopes[token.scopes.length - 1]\n                            })),\n                        }\n                    }\n                })\n            })\n    )\n}\n", "import { triggerEvent } from \"../listeners\";\nfunction createEditorActive6030Event(payload) {\n  console.warn(\"[DEPRECATED] Use triggerEditorActive6030Event instead of createEditorActive6030Event.\");\n  return {\n    ...payload,\n    event: \"editor_active_60_30\"\n  };\n}\nconst meta = {\n  track: true\n};\nfunction triggerEditorActive6030Event(payload) {\n  const event = {\n    ...payload,\n    event: \"editor_active_60_30\"\n  };\n  triggerEvent(event, meta);\n}\nexport {\n  createEditorActive6030Event,\n  triggerEditorActive6030Event\n};\n", "import { triggerEvent } from \"../listeners\";\nfunction createEditorCloseFileEvent(payload) {\n  console.warn(\"[DEPRECATED] Use triggerEditorCloseFileEvent instead of createEditorCloseFileEvent.\");\n  return {\n    ...payload,\n    event: \"editor_close_file\"\n  };\n}\nconst meta = {\n  track: true\n};\nfunction triggerEditorCloseFileEvent(payload) {\n  const event = {\n    ...payload,\n    event: \"editor_close_file\"\n  };\n  triggerEvent(event, meta);\n}\nexport {\n  createEditorCloseFileEvent,\n  triggerEditorCloseFileEvent\n};\n", "import { triggerEvent } from \"../listeners\";\nfunction createEditorOpenFileEvent(payload) {\n  console.warn(\"[DEPRECATED] Use triggerEditorOpenFileEvent instead of createEditorOpenFileEvent.\");\n  return {\n    ...payload,\n    event: \"editor_open_file\"\n  };\n}\nconst meta = {\n  track: true\n};\nfunction triggerEditorOpenFileEvent(payload) {\n  const event = {\n    ...payload,\n    event: \"editor_open_file\"\n  };\n  triggerEvent(event, meta);\n}\nexport {\n  createEditorOpenFileEvent,\n  triggerEditorOpenFileEvent\n};\n", "import type { LocalModuleId } from \"@framerjs/shared\"\nimport { getLogger, isAppleDevice, isCommandKeyPressed, isDependenciesFileId, unhandledError } from \"@framerjs/shared\"\nimport { cx } from \"@linaria/core\"\nimport { employeesOnlySettings } from \"app/employeesOnlySettings.ts\"\nimport { EngineChange, type ObserverToken } from \"document/EngineChanges.ts\"\nimport { hideInstantNPMToast } from \"document/components/chrome/shared/InstantNPMToast.tsx\"\nimport { popoutWindow } from \"document/components/chrome/shared/PopoutWindow.tsx\"\nimport engine from \"document/engine.ts\"\nimport { environment } from \"environment/index.ts\"\nimport { isEqual } from \"library/index.ts\"\nimport { preloadCompiler } from \"modules/compiler.ts\"\nimport type { ImportStatement } from \"modules/utils.ts\"\nimport { getNpmImports, isModuleURL } from \"modules/utils.ts\"\nimport React from \"react\"\nimport { randomBase62 } from \"utils/base62.ts\"\nimport {\n\tperformanceClearMarks,\n\tperformanceClearMeasures,\n\tperformanceMark,\n\tperformanceMeasure,\n} from \"utils/userTiming.ts\"\nimport { toast } from \"web/lib/toaster.ts\"\nimport * as classes from \"./CodeEditorManager.styles.ts\"\nimport { EditableFile } from \"./EditableFile.ts\"\nimport { DISMISSED_SAVE_TOAST_STORAGE_KEY, MonacoEditor, SAVE_TOAST_KEY } from \"./MonacoEditor.tsx\"\nimport { fileManager } from \"./MonacoGlobals.ts\"\n\nconst log = getLogger(\"code-editor-manager\")\n\n// setup a main react component that wires the editor and its state\n\ninterface Props {\n\tclassName?: string\n\tisViewOnly: boolean\n\tshowCodeAgentPanel: boolean\n}\n\ninterface EditorState {\n\tfileManagerUpdate: number\n\tcurrentFile: EditableFile | null\n\tcodeEditorPreviewWidth: number\n\tpreviewDisplayed: boolean\n\tcodeAgentPanelWidth: number\n\tversionHistoryActive: boolean\n\tversionHistoryDiffFile: string | null\n}\n\n// Using `export default` since React.lazy() explicitly doesn\u2019t support\n// named imports: https://github.com/reactjs/rfcs/pull/64/files/cf3da2d484051e77a10498f09251726c4d1a0537#diff-407e9f5a8c77b262dd5bc8ba5ab03841R64-R75\n// biome-ignore lint/style/noDefaultExport: needed here\nexport default class CodeEditorManager extends React.Component<Props, EditorState> {\n\tprivate documentSettingsObserverToken: ObserverToken | undefined\n\tprivate layoutObserverToken: ObserverToken | undefined\n\tprivate editorStoreObserverToken: ObserverToken | undefined\n\t// Once set to false, the toast will no longer be displayed by this component.\n\tprivate shouldShowSaveToast = true\n\tprivate unmounted = false\n\n\tconstructor(props: Props) {\n\t\tsuper(props)\n\t\tconst { chromeStore, codeEditorStore } = engine.stores\n\n\t\tconst currentFile = this.restoreCurrentFile()\n\t\tthis.state = {\n\t\t\tfileManagerUpdate: fileManager.update,\n\t\t\tcurrentFile,\n\t\t\tcodeEditorPreviewWidth: chromeStore.codeEditorPreviewWidth,\n\t\t\tpreviewDisplayed: chromeStore.codeEditorPreviewVisible,\n\t\t\tcodeAgentPanelWidth: engine.stores.layoutState.getCurrentPropertyPanelWidth(),\n\t\t\tversionHistoryActive: codeEditorStore.versionHistoryActive,\n\t\t\tversionHistoryDiffFile: null,\n\t\t}\n\n\t\tengine.scheduler.processWhenReady(() => {\n\t\t\tcodeEditorStore.currentCodeFileSyncing = engine.stores.modulesStore.hasLocalCodeFileChanges()\n\t\t\tcodeEditorStore.currentCodeFileEdited = currentFile?.isEdited() ?? false\n\t\t})\n\t}\n\n\toverride componentDidMount() {\n\t\tthis.shouldShowSaveToast = true\n\n\t\tfileManager.addOnChangeHandler(this.onFilesChanged)\n\t\t// TODO: This is used to set syncing in codeEditorStore, which is used by breadcrumb to show a spinner. it would make more sense if that only happened on change events.\n\t\tfileManager.addSyncingStatusChangeHandler(this.handleSyncingStatusChange)\n\n\t\tdocument.addEventListener(\"keydown\", this.onKeyDown)\n\n\t\tconst { codeEditorStore, chromeStore } = engine.stores\n\n\t\tthis.documentSettingsObserverToken = engine.scheduler.changes.observe(chromeStore, this.onGlobalStateChange)\n\t\tthis.layoutObserverToken = engine.scheduler.changes.observe(\n\t\t\tEngineChange.PropertyPanelWidth,\n\t\t\tEngineChange.TabContentWidth,\n\t\t\tthis.onGlobalStateChange,\n\t\t)\n\t\t// This is needed to observe changes to currentFile\n\t\tthis.editorStoreObserverToken = engine.scheduler.changes.observe(codeEditorStore, this.onGlobalStateChange)\n\n\t\tfileManager\n\t\t\t.whenInitialized()\n\t\t\t.then(() => {\n\t\t\t\tif (this.unmounted) return\n\t\t\t\tfileManager.somethingUpdated()\n\t\t\t\tthis.onGlobalStateChange()\n\t\t\t})\n\t\t\t.catch(log.reportError)\n\n\t\t// Preload the compiler worker, we are going to need it for code analysis.\n\t\tpreloadCompiler().catch(unhandledError)\n\n\t\tif (this.state.currentFile != null) {\n\t\t\tthis.state.currentFile.addEditedChangeListener(this.handleCurrentFileEditedChange)\n\t\t}\n\n\t\tengine.scheduler.processWhenReady(() => {\n\t\t\tif (this.unmounted) return\n\t\t\tcodeEditorStore.registerSaveCurrentFileHandler(this.saveCurrentFile)\n\t\t})\n\t}\n\n\toverride componentDidUpdate(_prevProps: Props, prevState: EditorState) {\n\t\tconst currentFile = this.state.currentFile\n\t\tif (currentFile === prevState.currentFile) return\n\n\t\tif (prevState.currentFile != null) {\n\t\t\tprevState.currentFile.removeEditedChangeListener(this.handleCurrentFileEditedChange)\n\t\t}\n\n\t\tif (currentFile != null) {\n\t\t\t// Refresh potentially stale cache of file's state (several ops on it are async)\n\t\t\tthis.handleCurrentFileEditedChange(currentFile.isEdited())\n\t\t\t// Add listener to the newly selected file\n\t\t\tcurrentFile.addEditedChangeListener(this.handleCurrentFileEditedChange)\n\t\t}\n\t}\n\n\toverride componentWillUnmount() {\n\t\tthis.shouldShowSaveToast = false\n\t\tthis.unmounted = true\n\n\t\tfileManager.removeOnChangeHandler(this.onFilesChanged)\n\t\tfileManager.removeSyncingStatusChangeHandler(this.handleSyncingStatusChange)\n\n\t\tdocument.removeEventListener(\"keydown\", this.onKeyDown)\n\t\tif (this.documentSettingsObserverToken) {\n\t\t\tengine.scheduler.changes.removeObserver(this.documentSettingsObserverToken)\n\t\t}\n\t\tif (this.editorStoreObserverToken) {\n\t\t\tengine.scheduler.changes.removeObserver(this.editorStoreObserverToken)\n\t\t}\n\t\tif (this.layoutObserverToken) {\n\t\t\tengine.scheduler.changes.removeObserver(this.layoutObserverToken)\n\t\t}\n\t\tif (this.state.currentFile != null) {\n\t\t\tthis.state.currentFile.removeEditedChangeListener(this.handleCurrentFileEditedChange)\n\t\t}\n\n\t\t// Hide the education toasts if present, we don't mark them as dismissed in localStorage though.\n\t\tthis.hideToasts()\n\t}\n\n\thandleSyncingStatusChange = (syncing: boolean) => {\n\t\tengine.scheduler.processWhenReady(() => {\n\t\t\tconst { codeEditorStore } = engine.stores\n\t\t\tif (syncing === codeEditorStore.currentCodeFileSyncing) return\n\t\t\tcodeEditorStore.currentCodeFileSyncing = syncing\n\t\t})\n\t}\n\n\thandleCurrentFileEditedChange = (hasEdits: boolean) => {\n\t\tengine.scheduler.processWhenReady(() => {\n\t\t\tconst { codeEditorStore } = engine.stores\n\t\t\tif (hasEdits === codeEditorStore.currentCodeFileEdited) return\n\t\t\tcodeEditorStore.currentCodeFileEdited = hasEdits\n\t\t\tif (hasEdits) this.showSaveToast()\n\t\t})\n\t}\n\n\tonGlobalStateChange = () => {\n\t\tconst { codeEditorStore, chromeStore } = engine.stores\n\t\tconst currentFile = this.restoreCurrentFile()\n\t\tconst fileDidChange = this.state.currentFile !== currentFile\n\t\tconst previewDisplayed = chromeStore.codeEditorPreviewVisible\n\t\tconst previewVisibleChange = this.state.previewDisplayed !== previewDisplayed\n\t\tconst codeEditorPreviewWidth = chromeStore.codeEditorPreviewWidth\n\t\tconst codeEditorPreviewWidthChange = this.state.codeEditorPreviewWidth !== codeEditorPreviewWidth\n\t\tconst codeAgentPanelWidth = engine.stores.layoutState.getCurrentPropertyPanelWidth()\n\t\tconst codeAgentPanelWidthChange = this.state.codeAgentPanelWidth !== codeAgentPanelWidth\n\t\tconst versionHistoryActive = codeEditorStore.versionHistoryActive\n\t\tconst versionHistoryDiffFile = codeEditorStore.versionHistoryDiffFile\n\t\tconst versionHistoryChange =\n\t\t\tthis.state.versionHistoryActive !== versionHistoryActive ||\n\t\t\tthis.state.versionHistoryDiffFile !== versionHistoryDiffFile\n\n\t\tengine.scheduler.processWhenReady(() => {\n\t\t\tconst { importsToAdd } = codeEditorStore\n\t\t\tif (importsToAdd.length > 0) {\n\t\t\t\tcodeEditorStore.importsToAdd = []\n\t\t\t\timportsToAdd.forEach(this.addImportToCurrent)\n\t\t\t}\n\t\t})\n\n\t\tconst stateDidChange =\n\t\t\tfileDidChange ||\n\t\t\tpreviewVisibleChange ||\n\t\t\tversionHistoryChange ||\n\t\t\tcodeEditorPreviewWidthChange ||\n\t\t\tcodeAgentPanelWidthChange\n\t\tif (!stateDidChange) return\n\n\t\tconst newState: EditorState = {\n\t\t\t...this.state,\n\t\t\tpreviewDisplayed,\n\t\t\tversionHistoryActive,\n\t\t\tversionHistoryDiffFile,\n\t\t\tcodeEditorPreviewWidth,\n\t\t\tcodeAgentPanelWidth,\n\t\t}\n\n\t\tnewState.currentFile = currentFile\n\t\tif (!currentFile) {\n\t\t\tthis.currentEditingComponent = null\n\t\t\tthis.hideToasts()\n\t\t}\n\n\t\tthis.setState(newState)\n\t}\n\n\tsaveCurrentFile = async () => {\n\t\tconst { currentFile } = this.state\n\t\tif (!currentFile) return\n\t\tawait this.handleFileSaveRequested(currentFile)\n\t}\n\n\thandleFileSaveRequested = async (file: EditableFile) => {\n\t\tif (!file) return\n\t\tif (!file.isEdited()) return\n\n\t\t// Create a performance mark\n\t\tconst uid: string = randomBase62(10)\n\t\tconst markName = `pre-file-save-${uid}`\n\t\tconst measureName = `\uD83E\uDD41 Pre-save: resolving file dependencies`\n\t\tperformanceMark(markName)\n\n\t\t// We don't use `file.analyzeImportsAndLoadNpmDependencies()` here and do both steps manually\n\t\t// because we want loading of npm dependencies and framer component dependencies in-parallel\n\t\tconst imports = await file.analyzeImports()\n\n\t\tconst dependencyResolutionPromises: Promise<void>[] = []\n\n\t\tconst npmImports = imports ? getNpmImports(imports) : []\n\t\tconst framerComponentImports = imports?.absolute.map(i => i.specifier).filter(isModuleURL)\n\n\t\tif (npmImports.length) {\n\t\t\tdependencyResolutionPromises.push(\n\t\t\t\tfile.installNpmDependencies(npmImports).catch(err => {\n\t\t\t\t\tlog.error(\"Failed to install npm dependencies\", err)\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t\tif (framerComponentImports?.length) {\n\t\t\t// We need to make sure all import maps used by the imported external Framer components\n\t\t\t// are installed into the project, before we try to save and re-evaluate the file.\n\t\t\tdependencyResolutionPromises.push(\n\t\t\t\tengine.stores.modulesStore.installExternalModulesDependencies(framerComponentImports).catch(err => {\n\t\t\t\t\tlog.error(\"Failed to install external component\", err)\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t\tif (dependencyResolutionPromises.length) {\n\t\t\t// It's safe to use Promise.all here because both promises never reject.\n\t\t\tawait Promise.all(dependencyResolutionPromises)\n\t\t}\n\n\t\t// Logging the mark\n\t\tif (process.env.NODE_ENV !== \"test\") {\n\t\t\tperformanceMeasure(measureName, markName)\n\t\t\tperformance.getEntriesByName(measureName, \"measure\").forEach(({ name, duration }) => {\n\t\t\t\tlog.debug(name, \"took\", duration.toFixed(2), \"ms\")\n\t\t\t\tperformanceClearMeasures(name)\n\t\t\t})\n\t\t\tperformanceClearMarks(markName)\n\t\t}\n\n\t\tawait fileManager.save(file)\n\t}\n\n\trestoreCurrentFile(): EditableFile | null {\n\t\tconst { codeEditorStore } = engine.stores\n\t\tconst id = codeEditorStore.currentCodeFileId\n\t\tif (!id) return null\n\t\tconst file = fileManager.getById(id)\n\t\tif (!file) return null\n\t\treturn file\n\t}\n\n\tonKeyDown = (event: KeyboardEvent) => {\n\t\tif (isCommandKeyPressed(event) && event.key === \"s\") {\n\t\t\tif (this.state.currentFile) {\n\t\t\t\twindow.localStorage.setItem(DISMISSED_SAVE_TOAST_STORAGE_KEY, \"true\")\n\t\t\t\ttoast({\n\t\t\t\t\ttype: \"remove\",\n\t\t\t\t\tkey: SAVE_TOAST_KEY,\n\t\t\t\t})\n\t\t\t\tvoid this.handleFileSaveRequested(this.state.currentFile)\n\t\t\t}\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t}\n\t}\n\n\tonFilesChanged = () => {\n\t\t// TODO this is not a great solution. but not sure how else to approach it.\n\t\t// This is necessary to restore the file incase of a remote rename event, for local rename selectFile is called on completion\n\t\tconst file = this.restoreCurrentFile()\n\t\tthis.selectFile(file?.id ?? null)\n\t\tthis.setState({ fileManagerUpdate: fileManager.update })\n\t}\n\n\tselectFile = (id: LocalModuleId | null) => {\n\t\tconst update: EditorState = { ...this.state }\n\t\tif (id != null) {\n\t\t\tconst file = fileManager.getById(id)\n\t\t\tif (file instanceof EditableFile) {\n\t\t\t\tthis.didUpdateCurrentFile(id)\n\t\t\t\tupdate.currentFile = file\n\t\t\t}\n\t\t} else {\n\t\t\t// if not selecting a folder or file, stop editing\n\t\t\tthis.didUpdateCurrentFile()\n\t\t\tupdate.currentFile = null\n\t\t\tthis.currentEditingComponent = null\n\t\t\tthis.hideToasts()\n\t\t}\n\t\tthis.setState(update)\n\t}\n\n\tsetCurrent = (currentFile: EditableFile) => {\n\t\tthis.didUpdateCurrentFile(currentFile.id)\n\t\tthis.setState({ currentFile })\n\t}\n\n\taddImportToCurrent = (importStatement: ImportStatement) => {\n\t\tif (this.props.isViewOnly) return\n\t\tconst { currentFile } = this.state\n\t\tif (!currentFile) return\n\t\tif (currentFile.isDisposed()) return\n\n\t\tcurrentFile.appendImportFromRemote(importStatement).catch(unhandledError)\n\n\t\tthis.didUpdateCurrentFile(currentFile.id)\n\t}\n\n\tcurrentEditingComponent: string | null = null\n\n\tdidUpdateCurrentFile(id?: LocalModuleId) {\n\t\tengine.scheduler.processWhenReady(() => {\n\t\t\tengine.stores.codeEditorStore.currentCodeFileId = id ?? null\n\t\t})\n\t}\n\n\tsendCurrentEditingComponent() {\n\t\tconst { currentFile } = this.state\n\t\tif (!currentFile) return\n\t\tthis.currentEditingComponent = null\n\t\tthis.didUpdateCurrentFile(currentFile.id)\n\t}\n\n\toverride shouldComponentUpdate(nextProps: Props, nextState: EditorState) {\n\t\treturn !isEqual(this.state, nextState) || !isEqual(this.props, nextProps)\n\t}\n\n\trequestLock = (id: string) => {\n\t\tif (!engine.remoteDocument) return true\n\t\treturn engine.remoteDocument.requestFileLock(id)\n\t}\n\n\treleaseLock = (id: string) => {\n\t\tif (!engine.remoteDocument) return true\n\t\treturn engine.remoteDocument.releaseFileLock(id)\n\t}\n\n\tgetLockUserName = () => {\n\t\tconst AnonymousName = \"Someone else\"\n\t\tconst { currentFile } = this.state\n\t\tif (!currentFile || !engine.remoteDocument) return AnonymousName\n\n\t\tconst lockUser = engine.remoteDocument.getFileLockState(currentFile.id)\n\t\tif (!lockUser) {\n\t\t\treturn AnonymousName\n\t\t}\n\n\t\treturn engine.stores.remoteUsers.getCursor(lockUser.userId)?.userName ?? AnonymousName\n\t}\n\n\toverride render() {\n\t\tconst { isViewOnly, className, showCodeAgentPanel } = this.props\n\t\tconst { currentFile, codeEditorPreviewWidth, previewDisplayed, codeAgentPanelWidth } = this.state\n\n\t\tif (currentFile && popoutWindow.isOpen()) {\n\t\t\tpopoutWindow.close()\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{currentFile && (\n\t\t\t\t\t<CodeEditorContainer className={className}>\n\t\t\t\t\t\t<MonacoEditor\n\t\t\t\t\t\t\tfiles={fileManager}\n\t\t\t\t\t\t\tfile={currentFile}\n\t\t\t\t\t\t\tsetCurrent={this.setCurrent}\n\t\t\t\t\t\t\tisViewOnly={isViewOnly || isViewOnlyFile(currentFile)}\n\t\t\t\t\t\t\tviewStateManager={engine.stores.documentSettingsStore}\n\t\t\t\t\t\t\trequestLock={this.requestLock}\n\t\t\t\t\t\t\treleaseLock={this.releaseLock}\n\t\t\t\t\t\t\tgetLockUserName={this.getLockUserName}\n\t\t\t\t\t\t\tcodeEditorPreviewWidth={codeEditorPreviewWidth}\n\t\t\t\t\t\t\tpreviewDisplayed={previewDisplayed}\n\t\t\t\t\t\t\tshowCodeAgentPanel={showCodeAgentPanel}\n\t\t\t\t\t\t\tcodeAgentPanelWidth={codeAgentPanelWidth}\n\t\t\t\t\t\t\tonFileSaveRequested={this.handleFileSaveRequested}\n\t\t\t\t\t\t\tversionHistoryActive={this.state.versionHistoryActive}\n\t\t\t\t\t\t\tversionHistoryDiffFile={this.state.versionHistoryDiffFile}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</CodeEditorContainer>\n\t\t\t\t)}\n\t\t\t</>\n\t\t)\n\t}\n\n\tprivate hideToasts() {\n\t\ttoast({\n\t\t\ttype: \"remove\",\n\t\t\tkey: SAVE_TOAST_KEY,\n\t\t})\n\t\thideInstantNPMToast()\n\t}\n\n\tprivate showSaveToast() {\n\t\tif (window.localStorage.getItem(DISMISSED_SAVE_TOAST_STORAGE_KEY) === \"true\") return\n\t\tif (!this.state.currentFile) return\n\t\tif (!this.shouldShowSaveToast) return\n\t\ttoast({\n\t\t\ttype: \"add\",\n\t\t\tvariant: \"info\",\n\t\t\tprimaryText: `Use ${isAppleDevice() ? \"\u2318\" : \"Ctrl + \"}S`,\n\t\t\tsecondaryText: \"to save.\",\n\t\t\tkey: SAVE_TOAST_KEY,\n\t\t\ticon: \"save\",\n\t\t\tduration: Infinity,\n\t\t\tshowCloseButton: \"never\",\n\t\t\taction: {\n\t\t\t\ttitle: \"Dismiss\",\n\t\t\t\tonClick: () => {\n\t\t\t\t\twindow.localStorage.setItem(DISMISSED_SAVE_TOAST_STORAGE_KEY, \"true\")\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t}\n}\n\n/**\n * Returns true for files that should always be view-only.\n */\nfunction isViewOnlyFile(file: EditableFile | null): boolean {\n\tif (!file) return false\n\n\tif (isDependenciesFileId(file.id)) {\n\t\t// Dependency files cannot be modified by the user.\n\t\treturn !employeesOnlySettings.isOn(\"showImportMap\")\n\t}\n\n\treturn false\n}\n\ninterface CodeEditorContainerProps {\n\tchildren: React.ReactNode\n\tclassName: string | undefined\n}\n\nfunction CodeEditorContainer({ children, className }: CodeEditorContainerProps) {\n\tconst supportsProjectBar = !(environment.isAutomation || environment.isTest)\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cx(\"editor\", classes.codeEditorContainer, className)}\n\t\t\tstyle={{\n\t\t\t\ttop: supportsProjectBar ? \"var(--framerInternalUI-chromeToolbarHeight)\" : 0,\n\t\t\t\tleft: \"var(--framerInternalUI-chromeMarginLeft)\",\n\t\t\t\tbottom: \"var(--framerInternalUI-chromeMarginBottom)\",\n\t\t\t}}\n\t\t>\n\t\t\t<div className={classes.codeEditor}>{children}</div>\n\t\t</div>\n\t)\n}\n", "import \"CodeEditorManager.styles_14tuwrj.wyw.css\"; export const codeEditorContainer = \"codeEditorContainer_c17qzk4e\";\nexport const codeEditor = \"codeEditor_c183hua9\";", "import { EngineChange } from \"document/EngineChanges.ts\"\nimport engine from \"document/engine.ts\"\nimport * as monaco from \"monaco-editor\"\nimport type { ComponentEvalError } from \"utils/translateErrorEvent.ts\"\nimport { getCodeFileBaseNameFromError, translateErrorEvent } from \"utils/translateErrorEvent.ts\"\n\nexport function updateModelErrors(model: monaco.editor.ITextModel) {\n\tconst fileName = model.uri.path.slice(1)\n\tconst errorList = engine.stores.componentsStore.scriptErrorsByFileName.get(fileName)\n\tupdateModelMarkers(model, errorList ?? [])\n}\n\n/**\n * Allows one to programmatically insert custom errors in the code Editor, these\n * are apart from the ones that are injected in MonacoGlobals. there can only be\n * one set of active errors for an owner string. That is if setModelMarkers is\n * called with the same owner string it will over-ride the previous set of\n * markers for that owner.\n */\nexport function insertModelMarker(\n\tmodel: monaco.editor.ITextModel,\n\towner: string,\n\tmarkers: monaco.editor.IMarkerData[],\n) {\n\tmonaco.editor.setModelMarkers(model, owner, markers)\n}\n\nfunction updateFileMarkers(fileName: string, errorList: ComponentEvalError[]) {\n\tconst uri = monaco.Uri.file(fileName)\n\tconst model = monaco.editor.getModel(uri)\n\tif (!model) return\n\n\tupdateModelMarkers(model, errorList)\n}\n\nexport interface DecorationInfo {\n\tloc: number\n\tclassName: \"npmGlyph-loading\" | \"npmGlyph-success\" | \"npmGlyph-resolved\"\n}\n\nexport function applyGutterDecorations(\n\tmodel: monaco.editor.ITextModel,\n\tdecorations: string[],\n\tnewDecorations: DecorationInfo[],\n) {\n\tconst decorationsToAdd = newDecorations.map(({ loc, className }) => ({\n\t\trange: new monaco.Range(loc, 0, loc, 0),\n\t\toptions: {\n\t\t\tisWholeLine: true,\n\t\t\tlinesDecorationsClassName: className,\n\t\t\tstickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n\t\t},\n\t}))\n\n\treturn model.deltaDecorations(decorations, decorationsToAdd)\n}\n\nfunction updateModelMarkers(model: monaco.editor.ITextModel, errorList: ComponentEvalError[]) {\n\tconst decorations = errorList.map(e => ({\n\t\trange: new monaco.Range(e.lineNumber, 1, e.lineNumber, 1),\n\t\toptions: {\n\t\t\tisWholeLine: true,\n\t\t\tclassName: \"runtimeErrorLine\",\n\t\t},\n\t}))\n\n\tconst expando = model as any\n\texpando.__decorations = model.deltaDecorations(expando.__decorations || [], decorations)\n\n\t// monaco uses human line numbers, not starting at zero but from one...count\n\tconst lineCount = model.getLineCount()\n\tmonaco.editor.setModelMarkers(\n\t\tmodel,\n\t\t\"framer-runtime\",\n\t\terrorList\n\t\t\t.filter(e => e.lineNumber > 0 && e.lineNumber <= lineCount)\n\t\t\t.map(e => {\n\t\t\t\tconst line = model.getLineContent(e.lineNumber) || \"\"\n\t\t\t\tconst trim = line.trim()\n\t\t\t\tconst startColumn = line.indexOf(trim) + 1\n\t\t\t\treturn {\n\t\t\t\t\tcode: \"runtime\",\n\t\t\t\t\tseverity: 8,\n\t\t\t\t\tmessage: e.message,\n\t\t\t\t\tstartLineNumber: e.lineNumber,\n\t\t\t\t\tstartColumn,\n\t\t\t\t\tendLineNumber: e.lineNumber,\n\t\t\t\t\tendColumn: startColumn + trim.length,\n\t\t\t\t}\n\t\t\t}),\n\t)\n}\n\nfunction updateAllModelMarkers() {\n\tconst { scriptErrorsByFileName } = engine.stores.componentsStore\n\tmonaco.editor.getModels().forEach(model => {\n\t\tconst fileName = model.uri.path.slice(1)\n\t\tif (!scriptErrorsByFileName.get(fileName)) {\n\t\t\tupdateModelMarkers(model, [])\n\t\t}\n\t})\n\tfor (const [fileName, errorList] of scriptErrorsByFileName) {\n\t\tupdateFileMarkers(fileName, errorList ?? [])\n\t}\n}\n\nfunction errorHandler(error: ComponentEvalError) {\n\tconst { componentsStore } = engine.stores\n\tcomponentsStore.updateScriptErrors(error)\n\n\tconst fileName = getCodeFileBaseNameFromError(error)\n\tconst errorList = componentsStore.scriptErrorsByFileName.get(fileName) ?? []\n\n\tupdateFileMarkers(fileName, errorList)\n}\n\nfunction windowErrorHandler(errorEvent: ErrorEvent) {\n\terrorHandler(translateErrorEvent(errorEvent))\n}\n\nexport function installErrorManager() {\n\tengine.scheduler.changes.observe(EngineChange.ScriptErrors, () => {\n\t\t// We observe `ScriptErrors`, which changes every time a new script is available\n\t\t// from the server or a new Error is received after the evaluation of that script.\n\t\t// We explicitly set whatever we have as errors to the editors after a short delay. We do that\n\t\t// mostly so that there is a mechanism that clears errors when all have been fixed.\n\t\tsetTimeout(updateAllModelMarkers, 500)\n\t})\n\n\twindow.addEventListener(\"error\", windowErrorHandler)\n}\n", "import { getServiceMap } from \"@framerjs/framer-environment/domains.ts\"\nimport type { LocalModuleId } from \"@framerjs/shared\"\nimport { assertNever, unhandledError } from \"@framerjs/shared\"\nimport {\n\thasDismissedInstantNPMToast,\n\thasShownInstantNPMToast,\n\tshowInstantNPMToast,\n} from \"document/components/chrome/shared/InstantNPMToast.tsx\"\nimport { analyzeModuleImports } from \"modules/compiler.ts\"\nimport { PROVIDED_DEPENDENCIES, parseInstallDescriptor } from \"modules/importMapManager.ts\"\nimport type { AnalyzedImport, AnalyzedImports } from \"modules/types.ts\"\nimport type { ImportStatement } from \"modules/utils.ts\"\nimport { getNpmImports } from \"modules/utils.ts\"\nimport type monaco from \"monaco-editor\"\nimport { toast } from \"web/lib/toaster.ts\"\nimport { CodeFile } from \"./CodeFile.ts\"\nimport type { DecorationInfo } from \"./ErrorAndDecoratorManager.ts\"\nimport { applyGutterDecorations, insertModelMarker } from \"./ErrorAndDecoratorManager.ts\"\nimport type { FileManager } from \"./FileManager.ts\"\nimport { log } from \"./logger.ts\"\nimport { formatCode } from \"./prettierFormatter.ts\"\nimport { supportsTypeAnalysisAndLinting } from \"./utils.ts\"\n\ntype EditedChangeListener = (hasEdits: boolean) => void\n\nexport class EditableFile {\n\tprivate formatted = false\n\tprivate backgroundSyncTimerRepeat = 0\n\tprivate backgroundSyncTimer: number | undefined = undefined\n\tprivate editedChangeListeners = new Set<EditedChangeListener>()\n\n\tpublic codeFile: CodeFile\n\tpublic readonly model: monaco.editor.ITextModel\n\n\t#analyzedImportsPromise: Promise<AnalyzedImports | undefined> | undefined\n\n\t#content: string\n\t#decorations: string[] = []\n\tget content() {\n\t\treturn this.#content\n\t}\n\tset content(newContent: string) {\n\t\tif (newContent === this.#content) return\n\t\tthis.#content = newContent\n\t\tthis.#analyzedImportsPromise = undefined\n\t}\n\n\tget id() {\n\t\treturn this.codeFile.id\n\t}\n\n\tget path() {\n\t\treturn this.codeFile.path\n\t}\n\n\tconstructor(\n\t\tprivate readonly manager: FileManager,\n\t\tid: LocalModuleId,\n\t\tpath: string,\n\t\tcontent: string,\n\t\t// This should only be set in the case that a rename generates a new file but has unsaved changes\n\t\tedited: boolean = false,\n\t) {\n\t\tthis.#content = content\n\t\tthis.codeFile = new CodeFile(id, path, edited)\n\t\tthis.model = manager.factory.create(path, content)\n\n\t\tthis.model.onDidChangeContent(() => {\n\t\t\tif (this.isEdited()) return\n\n\t\t\tthis.setEdited(true)\n\t\t})\n\t}\n\n\tdispose() {\n\t\tif (this.codeFile.disposed) return\n\t\tthis.codeFile.disposed = true\n\t\tthis.model.dispose()\n\t}\n\n\tisDisposed() {\n\t\treturn this.codeFile.disposed\n\t}\n\n\tpublic setEdited(edited: boolean): void {\n\t\tconst prevEdited = this.codeFile.isEdited()\n\t\tthis.codeFile.setEdited(edited)\n\n\t\tif (edited) {\n\t\t\tthis.formatted = false\n\t\t\t// Invalidate the analyzed imports.\n\t\t\tthis.#analyzedImportsPromise = undefined\n\t\t}\n\n\t\tif (prevEdited !== edited) {\n\t\t\tthis.notifyEditedChangeListeners(edited)\n\t\t}\n\t}\n\n\tpublic isEdited(): boolean {\n\t\treturn this.codeFile.isEdited()\n\t}\n\n\tpublic updateContentFromRemote(content: string): void {\n\t\tif (this.content === content) return\n\t\tthis.content = content\n\t\tif (this.model.getValue() === content) return\n\n\t\tthis.manager.factory.setValue(this.model, content)\n\t\tthis.setEdited(false)\n\t\tthis.formatted = false\n\t}\n\n\tpublic async appendImportFromRemote(importStatement: ImportStatement): Promise<void> {\n\t\t// TODO: Kick off this promise sooner to avoid a delay when importing.\n\t\tconst imports = await this.analyzeImports()\n\t\tif (!imports) {\n\t\t\ttoast({\n\t\t\t\ttype: \"add\",\n\t\t\t\tvariant: \"error\",\n\t\t\t\tprimaryText: \"Can\u2019t add component import.\",\n\t\t\t\tsecondaryText: \"Errors found.\",\n\t\t\t\ticon: \"error\",\n\t\t\t\tduration: 3000,\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\tconst allImports = imports.bare.concat(imports.relative, imports.absolute)\n\n\t\tlet lastImportLine = 0\n\t\tfor (const i of allImports) {\n\t\t\t// `+ 1` is here because `specifierLine` reported by the compiler is 0-based but Monaco\n\t\t\t// works with 1-based line and column numbers.\n\t\t\tif (i.specifierLine + 1 > lastImportLine) lastImportLine = i.specifierLine + 1\n\t\t}\n\n\t\tthis.manager.factory.insertText(this.model, importStatement.toStringRelativeTo(this.codeFile.path) + `\\n`, {\n\t\t\tstartLineNumber: lastImportLine + 1,\n\t\t\tendLineNumber: lastImportLine + 1,\n\t\t\tstartColumn: 0,\n\t\t\tendColumn: 0,\n\t\t})\n\n\t\t// Make sure to load types for this import if they're not already loaded.\n\t\tif (importStatement.info.kind === \"external\") {\n\t\t\tthis.addTypesForModuleURL(importStatement.info.specifier).catch(() => {})\n\t\t}\n\n\t\tthis.setEdited(true)\n\t}\n\n\tpublic async applyContentEdits() {\n\t\tlet modelContent = this.model.getValue()\n\t\tif (!this.formatted) {\n\t\t\tconst formattedModelContent = await formatContent(modelContent, this.model.getLanguageId())\n\t\t\tif (formattedModelContent !== modelContent) {\n\t\t\t\tthis.manager.factory.setValue(this.model, formattedModelContent)\n\t\t\t\tthis.formatted = true\n\t\t\t\tmodelContent = formattedModelContent\n\t\t\t}\n\t\t}\n\n\t\t// sync content and editor model content\n\t\tthis.content = modelContent\n\t}\n\n\tpublic addEditedChangeListener(onEditedChange: EditedChangeListener) {\n\t\tthis.editedChangeListeners.add(onEditedChange)\n\t}\n\n\tpublic removeEditedChangeListener(onEditedChange: EditedChangeListener) {\n\t\tthis.editedChangeListeners.delete(onEditedChange)\n\t}\n\n\tprivate notifyEditedChangeListeners(hasEdits: boolean) {\n\t\tthis.editedChangeListeners.forEach(onHasEditsChange => onHasEditsChange(hasEdits))\n\t}\n\n\tprivate async addTypesForModuleURL(url: string) {\n\t\t// TODO: Also skip imports already in the process of being added.\n\t\tif (this.manager.factory.hasLibrary(url)) return\n\n\t\ttry {\n\t\t\tthis.manager.factory.incrementPendingLibraries(`addTypesForModuleURL:  ${url}`)\n\t\t\t// Kick off a request to retrieve the TypeScript source.\n\t\t\tconst content = await getTypeScriptContentForModuleURL(url)\n\t\t\t// Make the language servers aware of the module.\n\t\t\tthis.manager.factory.addLibrary(url, content)\n\t\t} finally {\n\t\t\tthis.manager.factory.decrementPendingLibraries(`addTypesForModuleURL:  ${url}`)\n\t\t}\n\t}\n\n\t/** Analyzes the imports in the current content. Memoized so that it's safe to use multiple times. */\n\tasync analyzeImports() {\n\t\tif (!supportsTypeAnalysisAndLinting(this.model.getLanguageId())) return\n\n\t\t// Trigger toast if it wasn't explicitly dismissed in a previous session.\n\t\tif (hasShownInstantNPMToast() && !hasDismissedInstantNPMToast()) {\n\t\t\tshowInstantNPMToast()\n\t\t}\n\n\t\tif (this.#analyzedImportsPromise) {\n\t\t\treturn this.#analyzedImportsPromise\n\t\t}\n\n\t\tthis.#analyzedImportsPromise = analyzeModuleImports(this.model.getValue()).then(result => {\n\t\t\tif (!result.ok) return undefined\n\n\t\t\tconst imports = result.value\n\t\t\timports.absolute.forEach(({ specifier }) => {\n\t\t\t\t// Load the types for every Framer import.\n\t\t\t\t// Note: We intentionally don't wait for the response here as it can be done in the background.\n\t\t\t\tthis.addTypesForModuleURL(specifier).catch(() => {})\n\t\t\t})\n\n\t\t\treturn imports\n\t\t})\n\t\treturn this.#analyzedImportsPromise\n\t}\n\n\tasync installNpmDependencies(npmImports: AnalyzedImport[]) {\n\t\tconst initialNpmDependencyLineDecorations: DecorationInfo[] = []\n\t\tconst resolvedNpmDependencyLineDecorations: DecorationInfo[] = []\n\n\t\tconst npmDependenciesPromises: Promise<void>[] = []\n\t\tconst npmDependenciesImportStatements: string[] = []\n\t\tconst importErrorMarkers: monaco.editor.IMarkerData[] = []\n\t\t// FIXME: Handle subpaths.\n\t\t// FIXME: Currently this requires multiple passes when opening a new file so that we can still update the import map with valid dependencies and capture errors for the failures.\n\t\tfor (const { specifierLine, specifierCol, specifier } of npmImports) {\n\t\t\tconst installDescriptor = parseInstallDescriptor(specifier)\n\n\t\t\tif (!installDescriptor) {\n\t\t\t\tunresolvedDependencyWarning(specifier, new Error(\"specifier is not a valid npm package\"))\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst status = this.manager.getNpmDependencyInstallStatus(installDescriptor)\n\n\t\t\tif (status === \"success\") {\n\t\t\t\tinitialNpmDependencyLineDecorations.push({ loc: specifierLine + 1, className: \"npmGlyph-resolved\" })\n\t\t\t\tresolvedNpmDependencyLineDecorations.push({\n\t\t\t\t\tloc: specifierLine + 1,\n\t\t\t\t\tclassName: \"npmGlyph-resolved\",\n\t\t\t\t})\n\t\t\t} else if (status === \"failure\") {\n\t\t\t\t// We don't set the initial gutterDecorator in failure cases.\n\t\t\t} else if (status === \"unknown\") {\n\t\t\t\tinitialNpmDependencyLineDecorations.push({ loc: specifierLine + 1, className: \"npmGlyph-loading\" })\n\t\t\t} else {\n\t\t\t\tassertNever(status)\n\t\t\t}\n\n\t\t\t// Check for subpaths on Provided dependencies.\n\t\t\tif (PROVIDED_DEPENDENCIES.has(installDescriptor?.target)) continue\n\n\t\t\tconst installTarget = installDescriptor.target\n\n\t\t\tnpmDependenciesPromises.push(\n\t\t\t\tthis.manager\n\t\t\t\t\t.addNpmDependencies(installDescriptor)\n\t\t\t\t\t.then(({ dependenciesMap }) => {\n\t\t\t\t\t\tlet resolvedVersion = dependenciesMap.dependencies[installTarget]\n\t\t\t\t\t\tif (!resolvedVersion) return\n\n\t\t\t\t\t\t// Currently, we can't use the glyph-success animation as it won't rerun on new inserts. So we jump straight to resolved.\n\t\t\t\t\t\tresolvedNpmDependencyLineDecorations.push({\n\t\t\t\t\t\t\tloc: specifierLine + 1,\n\t\t\t\t\t\t\tclassName: \"npmGlyph-resolved\",\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\tthis.manager.factory.incrementPendingLibraries(`npmDependenciesImportStatements:  ${specifier}`)\n\n\t\t\t\t\t\tif (resolvedVersion.startsWith(\"^\") || resolvedVersion.startsWith(\"~\")) {\n\t\t\t\t\t\t\t// Strip the range character from the version, because ATA only works with exact versions.\n\t\t\t\t\t\t\tresolvedVersion = resolvedVersion.substring(1)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnpmDependenciesImportStatements.push(`import \"${installTarget}\"; // types: ${resolvedVersion ?? \"latest\"}`)\n\t\t\t\t\t})\n\t\t\t\t\t.catch(err => {\n\t\t\t\t\t\tunresolvedDependencyWarning(specifier, err)\n\n\t\t\t\t\t\tconst line = specifierLine + 1\n\t\t\t\t\t\t// don't adjust by (+1) as we want to start the line under the \" like the default TS errors\n\t\t\t\t\t\tconst start = specifierCol\n\t\t\t\t\t\t// +2 to account for opening and closing `\"`\n\t\t\t\t\t\tconst length = specifier.length + 2\n\t\t\t\t\t\tconst marker = {\n\t\t\t\t\t\t\tcode: \"f3\", // Note, error code is visible to user after message\n\t\t\t\t\t\t\tseverity: 8, // monaco.MarkerSeverity.Error\n\t\t\t\t\t\t\tmessage: `Module ${specifier} is not a valid npm package.`,\n\t\t\t\t\t\t\t// message: `Cannot find module '${specifier}' or its corresponding type declarations.(2307)`,\n\t\t\t\t\t\t\tstartLineNumber: line,\n\t\t\t\t\t\t\tstartColumn: start,\n\t\t\t\t\t\t\tendLineNumber: line,\n\t\t\t\t\t\t\tendColumn: start + length,\n\t\t\t\t\t\t}\n\t\t\t\t\t\timportErrorMarkers.push(marker)\n\t\t\t\t\t}),\n\t\t\t)\n\t\t}\n\n\t\tif (initialNpmDependencyLineDecorations.length) {\n\t\t\tthis.#decorations = applyGutterDecorations(this.model, [], initialNpmDependencyLineDecorations)\n\t\t}\n\n\t\tif (npmDependenciesPromises.length) {\n\t\t\tconst installPromise = Promise.allSettled(npmDependenciesPromises)\n\n\t\t\t// After all dependencies have been resolved we kick off automatic\n\t\t\t// type acquisition in the background (non-blocking).\n\t\t\t// This is done to avoid errors in the editor as each subsequent set of types is applied.\n\t\t\tinstallPromise\n\t\t\t\t.then(() => {\n\t\t\t\t\t// Apply the markers for import errors all at\n\t\t\t\t\t// once, less flashing, but means that errors will show\n\t\t\t\t\t// after a brief delay (all dependencies would need to\n\t\t\t\t\t// be evaluated by the generator first).\n\n\t\t\t\t\t// Note This runs with an empty array if there are no\n\t\t\t\t\t// errors detected which flushes the previous errors for\n\t\t\t\t\t// this owner\n\t\t\t\t\tinsertModelMarker(this.model, \"framer-bare-imports\", importErrorMarkers)\n\n\t\t\t\t\t// update decorations now that imports have been resolved\n\t\t\t\t\tthis.#decorations = applyGutterDecorations(\n\t\t\t\t\t\tthis.model,\n\t\t\t\t\t\tthis.#decorations,\n\t\t\t\t\t\tresolvedNpmDependencyLineDecorations,\n\t\t\t\t\t)\n\n\t\t\t\t\tif (!npmDependenciesImportStatements.length) return\n\n\t\t\t\t\t// Remove all the individual counts which were added\n\t\t\t\t\t// while resolving npmImports above. This is also done\n\t\t\t\t\t// because the  `finished` callback doesn't expose any\n\t\t\t\t\t// information which would allow us to operate over the\n\t\t\t\t\t// list of imports provide\n\t\t\t\t\tthis.manager.factory.decrementPendingLibraries(\n\t\t\t\t\t\t\"npmDependenciesImportStatements\",\n\t\t\t\t\t\tnpmDependenciesImportStatements.length,\n\t\t\t\t\t)\n\n\t\t\t\t\tconst code = npmDependenciesImportStatements.join(\"\\n\")\n\t\t\t\t\tlog.debug(\"Attempt to get types for:\", code)\n\t\t\t\t\tthis.manager.acquireNpmTypes(code).catch(unhandledError)\n\t\t\t\t})\n\t\t\t\t.catch(unhandledError)\n\n\t\t\tawait installPromise\n\t\t}\n\t}\n\n\tasync analyzeImportsAndLoadNpmDependencies(): Promise<AnalyzedImports | undefined> {\n\t\tconst imports = await this.analyzeImports()\n\t\tif (!imports) return imports\n\n\t\tconst npmImports = getNpmImports(imports)\n\t\tif (!npmImports.length) return imports\n\n\t\tawait this.installNpmDependencies(npmImports)\n\n\t\treturn imports\n\t}\n\n\t// same as above, but without formatting, without changing edited state, etc\n\t// used mostly to auto update preview window\n\tbackgroundSync = async (): Promise<void> => {\n\t\tif (this.backgroundSyncTimerRepeat > 0) {\n\t\t\tthis.backgroundSyncTimerRepeat -= 1\n\t\t\tthis.backgroundSyncTimer = window.setTimeout(this.backgroundSync, 250)\n\t\t\treturn\n\t\t}\n\n\t\tthis.backgroundSyncTimer = undefined\n\t\tif (this.isDisposed()) return\n\t\tconst content = this.model.getValue()\n\t\tif (this.content === content) return\n\t\tthis.content = content\n\t\tawait this.manager.save(this)\n\t}\n}\n\nfunction unresolvedDependencyWarning(specifier: string, err: Error) {\n\tlog.warn(err)\n\ttoast({\n\t\ttype: \"add\",\n\t\tvariant: \"error\",\n\t\ttext: `Unable to resolve package ${specifier}`,\n\t\ticon: \"error\",\n\t\tduration: 5000,\n\t})\n}\n\nasync function formatContent(content: string, languageId: string): Promise<string> {\n\ttry {\n\t\treturn await formatCode(content, languageId)\n\t} catch (e) {\n\t\tlog.warnOncePerMinute(\"error:\", e)\n\t\treturn content\n\t}\n}\n\nasync function getTypeScriptContentForModuleURL(url: string): Promise<string> {\n\tconst { modulesCDN, modulesShortLink } = getServiceMap()\n\tif (url.startsWith(modulesShortLink + \"/\")) {\n\t\t// Short links let us redirect directly to the source.\n\t\tconst parsedURL = new URL(url)\n\t\t// Remove the .js part if there is one and tell the backend to redirect us to the source.\n\t\tparsedURL.pathname = parsedURL.pathname.replace(/\\.js(?=@|$)/u, \"\")\n\t\tparsedURL.searchParams.set(\"type\", \"source\")\n\t\tconst response = await fetch(parsedURL.href)\n\t\treturn response.text()\n\t}\n\tif (!url.startsWith(modulesCDN + \"/\") || !url.endsWith(\".js\")) {\n\t\tthrow Error(\"Invalid module URL\")\n\t}\n\t// For absolute CDN URLs we need to try both .ts and .tsx possibilities (for now).\n\tconst [ts, tsx] = await Promise.allSettled([\n\t\tfetch(url.replace(/\\.js$/u, \".ts\")),\n\t\tfetch(url.replace(/\\.js$/u, \".tsx\")),\n\t])\n\tif (ts.status === \"fulfilled\" && ts.value.ok) {\n\t\treturn ts.value.text()\n\t} else if (tsx.status === \"fulfilled\" && tsx.value.ok) {\n\t\treturn tsx.value.text()\n\t} else {\n\t\tthrow Error(\"Failed to get source\")\n\t}\n}\n", "import { triggerEditorCloseFileEvent, triggerEditorOpenFileEvent } from \"@framerjs/framer-events\"\nimport { synchronizeDebounced } from \"@framerjs/framer-runtime/utils/locks\"\nimport { fonts } from \"@framerjs/fresco/tokens\"\nimport { ModuleType, isCommandKeyPressed, unhandledError } from \"@framerjs/shared\"\nimport { cx } from \"@linaria/core\"\nimport type { MenuItemOptions } from \"app/menu.ts\"\nimport type { ObserverToken } from \"document/EngineChanges.ts\"\nimport { EngineChange } from \"document/EngineChanges.ts\"\nimport { toggleQuickActionsDevPlugin } from \"document/components/chrome/QuickActions/QuickActionsModal.tsx\"\nimport { QuickActionsCategoryType } from \"document/components/chrome/QuickActions/types.ts\"\nimport engine from \"document/engine.ts\"\nimport { ModalType } from \"document/utils/ModalType.ts\"\nimport md5 from \"md5\"\nimport { analyzeModuleImports } from \"modules/compiler.ts\"\nimport { normalizePath } from \"modules/utils.ts\"\nimport * as monaco from \"monaco-editor\"\nimport { editor as EditorAPI } from \"monaco-editor/esm/vs/editor/editor.api.js\"\nimport { StandaloneServices } from \"monaco-editor/esm/vs/editor/standalone/browser/standaloneServices.js\"\nimport { createDecorator } from \"monaco-editor/esm/vs/platform/instantiation/common/instantiation.js\"\nimport React from \"react\"\nimport { appPointerEvents } from \"utils/appPointerEvents.styles.ts\"\nimport { isShallowEqual } from \"utils/isShallowEqual.ts\"\nimport type { ViewStateManager } from \"utils/monaco-editor/viewStateManager.ts\"\nimport { toast } from \"web/lib/toaster.ts\"\nimport { Pages, UIInteraction, record } from \"web/lib/tracker.ts\"\nimport type { EditableFile } from \"./EditableFile.ts\"\nimport { signalEditorActivity, startEditorActivityCounter } from \"./EditorActivityCounter.ts\"\nimport { updateModelErrors } from \"./ErrorAndDecoratorManager.ts\"\nimport type { FileManager } from \"./FileManager.ts\"\nimport * as classNames from \"./MonacoEditor.styles.ts\"\nimport { addErrorLineMarginOverlay } from \"./MonacoEditorExtensions.ts\"\nimport { editorIcons } from \"./MonacoEditorIcons.ts\"\nimport * as framerTheme from \"./framerTheme.ts\"\nimport { log } from \"./logger.ts\"\nimport { hasValidExtension, supportsTypeAnalysisAndLinting } from \"./utils.ts\"\n\nexport const DISMISSED_SAVE_TOAST_STORAGE_KEY = \"dismissedSaveEducationToast\"\nexport const SAVE_TOAST_KEY = \"save-education\"\n\ntype KeyboardLayoutMap = Map<string, string>\n\ndeclare global {\n\tinterface Navigator {\n\t\t// Note: Chrome only for now.\n\t\tkeyboard?: {\n\t\t\tgetLayoutMap?(): Promise<KeyboardLayoutMap>\n\t\t}\n\t}\n}\n\nfunction lineHeightForFontSize(fontSize: number): number {\n\t// FIXME: Check if there is a cleaner CSS based solution for this\n\t// Multiplier to scale line height with font size, -2 to adjust for smaller font sizes\n\treturn Math.round(fontSize * 1.8) - 2\n}\n\nconst lockedFileToastKey = \"currently-editing\"\nconst viewOnlyToastKey = \"view-only\"\nconst minimapMinWidth = 600\n\nconst { documentSettingsStore, siteSettingsStore } = engine.stores\n\n// setup theme and respond to changes\nmonaco.editor.setTheme(documentSettingsStore.hasDarkAppearance ? framerTheme.dark : framerTheme.light)\nengine.scheduler.changes.observe(EngineChange.DocumentSettings, siteSettingsStore, () => {\n\tif (siteSettingsStore.isOpen) return\n\tconst hasDarkAppearance = documentSettingsStore.hasDarkAppearance\n\tmonaco.editor.setTheme(hasDarkAppearance ? framerTheme.dark : framerTheme.light)\n})\n\ninterface MonacoEditorProps {\n\tviewStateManager: ViewStateManager\n\tfiles: FileManager\n\tfile: EditableFile\n\tsetCurrent: (file: EditableFile) => void\n\tisViewOnly: boolean\n\trequestLock: (path: string) => boolean\n\treleaseLock: (path: string) => void\n\tgetLockUserName: () => string\n\tcodeEditorPreviewWidth: number\n\tpreviewDisplayed: boolean\n\tshowCodeAgentPanel: boolean\n\tcodeAgentPanelWidth: number\n\tonFileSaveRequested: (file: EditableFile) => void\n\tversionHistoryActive: boolean\n\tversionHistoryDiffFile: string | null\n}\n\ninterface MonacoEditorSnapshot {\n\tisPropsShallowEqual: boolean\n\teditorViewState: EditorAPI.ICodeEditorViewState | null\n}\n\ninterface ViewZoneIDs {\n\toriginal: string | null\n\tmodified: string | null\n}\n\n// this is to anonymize files as we track time spend editing to our metrics\nfunction hashFileName(model: monaco.editor.ITextModel): string {\n\treturn md5(\"-!-salt-x-\" + model.uri.fsPath)\n}\n\nfunction setTopViewZone(accessor: monaco.editor.IViewZoneChangeAccessor) {\n\treturn accessor.addZone({ afterLineNumber: 0, heightInPx: 20, domNode: document.createElement(\"div\") })\n}\n\nfunction removeTopViewZone(accessor: monaco.editor.IViewZoneChangeAccessor, id: string) {\n\treturn accessor.removeZone(id)\n}\n\nexport class MonacoEditor extends React.Component<MonacoEditorProps> {\n\teditorDiv: HTMLElement | null = null\n\teditor: monaco.editor.IStandaloneCodeEditor | null = null\n\tdiffEditorDiv: HTMLElement | null = null\n\tdiffEditor: monaco.editor.IStandaloneDiffEditor | null = null\n\tdiffEditorViewZoneIDs: ViewZoneIDs = { original: null, modified: null }\n\tstart = Date.now()\n\tkeyboardLayoutMap?: KeyboardLayoutMap\n\tdecorations: string[] = []\n\n\tcheckLockInterval: number = 0\n\thasLock = true\n\tprivate minimapVisible = true\n\n\tprivate userDefaultsObserverToken: ObserverToken | undefined\n\tprivate layoutAnimationFrame: number | undefined\n\n\t// strangely, Safari generates a MouseMove event whenever the cmd goes down\n\tsafariMouseWorkaroundX = 0\n\tsafariMouseWorkaroundY = 0\n\tsafariMouseMoveWorkaround = (event: MouseEvent) => {\n\t\tif (event.type !== \"mousemove\") return\n\n\t\tconst x = event.clientX\n\t\tconst y = event.clientY\n\t\t// filter mouse move events away that don't actually move\n\t\tif (isCommandKeyPressed(event) && this.safariMouseWorkaroundX === x && this.safariMouseWorkaroundY === y) {\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopImmediatePropagation()\n\t\t}\n\t\tthis.safariMouseWorkaroundX = x\n\t\tthis.safariMouseWorkaroundY = y\n\t}\n\n\toverride componentDidMount() {\n\t\tif (navigator.keyboard && navigator.keyboard.getLayoutMap) {\n\t\t\tnavigator.keyboard\n\t\t\t\t.getLayoutMap()\n\t\t\t\t.then(keyboardLayoutMap => {\n\t\t\t\t\tthis.keyboardLayoutMap = keyboardLayoutMap\n\t\t\t\t})\n\t\t\t\t.catch(unhandledError)\n\t\t}\n\n\t\tif (!this.props.isViewOnly) {\n\t\t\t// If editing the files is possible, we initialize the file locking session.\n\t\t\tthis.initLockSession()\n\t\t}\n\n\t\tif (this.props.isViewOnly) {\n\t\t\ttoast({\n\t\t\t\ttype: \"add\",\n\t\t\t\tvariant: \"info\",\n\t\t\t\tprimaryText: \"Read-only editor.\",\n\t\t\t\tsecondaryText: \"You cannot edit files.\",\n\t\t\t\tduration: Infinity,\n\t\t\t\tkey: viewOnlyToastKey,\n\t\t\t})\n\t\t}\n\t\tconst model = this.props.file.model\n\t\tif (this.editor && model !== this.editor.getModel()) {\n\t\t\tthis.editorSetModel(model)\n\t\t}\n\n\t\t// only Safari\n\t\tif (!navigator.appVersion.includes(\"AppleWebKit\")) return\n\t\tif (navigator.appVersion.includes(\"Chrome\")) return\n\t\twindow.addEventListener(\"mousemove\", this.safariMouseMoveWorkaround, true)\n\n\t\tif (!this.editor) {\n\t\t\treturn\n\t\t}\n\t\tthis.restoreEditorViewState()\n\t\tthis.editor.focus()\n\t}\n\n\toverride componentWillUnmount() {\n\t\tthis.endLockSession()\n\t\tif (this.layoutAnimationFrame !== undefined) {\n\t\t\tcancelAnimationFrame(this.layoutAnimationFrame)\n\t\t\tthis.layoutAnimationFrame = undefined\n\t\t}\n\t\twindow.removeEventListener(\"mousemove\", this.safariMouseMoveWorkaround)\n\t\ttoast({ type: \"remove\", key: viewOnlyToastKey })\n\n\t\tif (!this.editor) return\n\t\tconst model = this.editor.getModel()\n\t\tif (!model) return\n\t\t// persist the users editor state (scroll, selection cursor)\n\t\tthis.props.viewStateManager.addEditorViewState(this.props.file.path, this.editor.saveViewState())\n\t\t// this.props.file.isDisposed() would only be true for legacy files with their optimistic UI when deleting\n\t\tif (!this.props.file.isDisposed()) {\n\t\t\tthis.props.onFileSaveRequested(this.props.file)\n\t\t}\n\n\t\tconst seconds = Math.round((Date.now() - this.start) / 1000)\n\t\ttriggerEditorCloseFileEvent({ filehash: hashFileName(model), seconds })\n\t}\n\n\tasync checkLock() {\n\t\tconst hadLock = this.hasLock\n\t\tconst { requestLock, file, isViewOnly } = this.props\n\t\tif (isViewOnly) return\n\t\tthis.hasLock = requestLock(file.id)\n\t\tif (this.hasLock === hadLock) return\n\n\t\tif (this.editor) this.editor.updateOptions({ readOnly: !this.hasLock })\n\t\tif (!this.hasLock) {\n\t\t\tconst name = this.props.getLockUserName()\n\t\t\ttoast({\n\t\t\t\ttype: \"add\",\n\t\t\t\tvariant: \"info\",\n\t\t\t\ttext: `${name} is currently editing this file`,\n\t\t\t\tduration: Infinity,\n\t\t\t\ticon: \"locked\",\n\t\t\t\tkey: lockedFileToastKey,\n\t\t\t})\n\t\t} else {\n\t\t\ttoast({ type: \"remove\", key: lockedFileToastKey })\n\t\t}\n\t}\n\n\tinitLockSession() {\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.checkLock()\n\t\tthis.checkLockInterval = window.setInterval(() => this.checkLock(), 15 * 1000)\n\t}\n\n\tendLockSession() {\n\t\tclearInterval(this.checkLockInterval)\n\t\tconst { file, releaseLock, isViewOnly } = this.props\n\t\tif (isViewOnly) return\n\t\treleaseLock(file.id)\n\n\t\ttoast({ type: \"remove\", key: lockedFileToastKey })\n\t}\n\n\teditorSetModel(model: monaco.editor.ITextModel) {\n\t\tif (!this.editor) return\n\t\tconst oldModel = this.editor.getModel()\n\t\tif (oldModel) {\n\t\t\tconst seconds = Math.round((Date.now() - this.start) / 1000)\n\t\t\ttriggerEditorCloseFileEvent({ filehash: hashFileName(oldModel), seconds })\n\t\t}\n\n\t\tthis.start = Date.now()\n\t\ttriggerEditorOpenFileEvent({ filehash: hashFileName(model) })\n\t\tthis.editor.setModel(model)\n\t}\n\n\trestoreEditorViewState = () => {\n\t\tconst { viewStateManager, file } = this.props\n\t\tif (!this.editor) {\n\t\t\treturn\n\t\t}\n\t\tconst editorViewState = viewStateManager.getEditorViewState(file.id)\n\t\tif (!editorViewState) {\n\t\t\treturn\n\t\t}\n\t\tthis.editor.restoreViewState(editorViewState)\n\t}\n\n\topenCodeEditor = (\n\t\t{ resource, options }: { resource: monaco.Uri; options: any },\n\t\teditor: monaco.editor.IStandaloneCodeEditor,\n\t) => {\n\t\tconst name = resource.path.startsWith(\"/\") ? resource.path.slice(1) : resource.path\n\t\tconst file = this.props.files.getByName(name)\n\t\tif (!file) return null\n\n\t\tthis.editorSetModel(file.model)\n\t\teditor.setSelection(options.selection)\n\t\teditor.revealLine(options.selection.startLineNumber)\n\t\teditor.focus()\n\t\tthis.props.setCurrent(file)\n\t\treturn {\n\t\t\tgetControl: () => editor,\n\t\t\tgetModel: () => file.model,\n\t\t\tcreateDecorationsCollection: editor.createDecorationsCollection.bind(editor),\n\t\t}\n\t}\n\n\tsetEditorDiv = (ref: HTMLElement | null) => {\n\t\tlog.debug(\"editor div mounted\", ref)\n\t\tif (this.editor) {\n\t\t\tthis.editor.dispose()\n\t\t\tthis.editor = null\n\t\t}\n\n\t\tthis.editorDiv = ref\n\t\tif (!ref) {\n\t\t\tthis.updateListeners()\n\t\t\treturn\n\t\t}\n\n\t\t// hook up go to definition\n\t\tconst overrides: EditorAPI.IEditorOverrideServices = {}\n\t\ttry {\n\t\t\tconst codeEditorService = StandaloneServices.get(createDecorator(\"codeEditorService\"))\n\t\t\tcodeEditorService.openCodeEditor = this.openCodeEditor\n\t\t\toverrides[\"codeEditorService\"] = codeEditorService\n\t\t} catch (e) {\n\t\t\tlog.warnOncePerMinute(\"unable to find StandaloneServices\", e)\n\t\t}\n\n\t\tconst model = this.props.file.model\n\t\t// Track the initial model being opened.\n\t\ttriggerEditorOpenFileEvent({ filehash: hashFileName(model) })\n\n\t\t// create actual editor\n\t\tconst { isViewOnly } = this.props\n\n\t\tconst editor = monaco.editor.create(\n\t\t\tref,\n\t\t\t{\n\t\t\t\t...monacoEditorOptions(),\n\t\t\t\tmodel,\n\t\t\t\tlanguage: \"javascript\",\n\t\t\t\treadOnly: isViewOnly,\n\t\t\t\tminimap: {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tsize: \"proportional\",\n\t\t\t\t\tshowSlider: \"always\",\n\t\t\t\t\tscale: 0.5,\n\t\t\t\t},\n\t\t\t\textraEditorClassName: getEditorClassName(true),\n\t\t\t},\n\t\t\toverrides,\n\t\t)\n\t\tthis.editor = editor\n\t\tthis.minimapVisible = true\n\n\t\t// use the openerService to open links in an external window\n\t\tconst linkDetector = editor.getContribution(\"editor.linkDetector\")\n\t\tif (linkDetector) {\n\t\t\t;(linkDetector as any).openerService.open = (uri: monaco.Uri) =>\n\t\t\t\twindow.open(uri.toString(), undefined, \"noopener\")\n\t\t}\n\n\t\t// set the top margin (viewZone) the first time the editor is constructed\n\t\teditor.changeViewZones(setTopViewZone)\n\n\t\t// Apply any pending scroll position\n\t\tthis.applyPendingScrollPosition()\n\n\t\t// The model changes when a user switches between files in the Assets pane\n\t\teditor.onDidChangeModel(() => {\n\t\t\tlog.debug(\"editor.onDidChangeModel() called\")\n\t\t\teditor.changeViewZones(setTopViewZone)\n\t\t\tconst newModel = editor.getModel()\n\t\t\tif (newModel) {\n\t\t\t\tupdateModelErrors(newModel)\n\t\t\t\trunCustomValidation(newModel)\n\t\t\t}\n\t\t\taddErrorLineMarginOverlay(editor)\n\t\t\tsignalEditorActivity()\n\n\t\t\t// Apply any pending scroll position when the model changes\n\t\t\tthis.applyPendingScrollPosition()\n\t\t})\n\n\t\tif (supportsTypeAnalysisAndLinting(model.getLanguageId())) {\n\t\t\trunCustomValidation(model)\n\t\t}\n\n\t\t// The model content changes when a user edits the file\n\t\teditor.onDidChangeModelContent(() => {\n\t\t\tlog.debug(\"editor.onDidChangeModelContent() called\")\n\t\t\tsignalEditorActivity()\n\t\t\tconst currentModel = editor.getModel()\n\t\t\tif (currentModel) {\n\t\t\t\tif (!supportsTypeAnalysisAndLinting(currentModel.getLanguageId())) return\n\t\t\t\trunCustomValidation(currentModel)\n\t\t\t}\n\t\t})\n\n\t\t// Override the Monaco's default CMD+I handler with our own - Open Code Import.\n\t\teditor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyI, () => {\n\t\t\tif (isViewOnly) return\n\t\t\tengine.stores.modalStore.set({\n\t\t\t\ttype: ModalType.QuickActions,\n\t\t\t\tsource: \"shortcut\",\n\t\t\t\tinitialCategory: { type: QuickActionsCategoryType.CodeImport },\n\t\t\t})\n\t\t\trecord(\"ui_interaction\", { page: Pages.codeEditor, id: UIInteraction.codeImport })\n\t\t})\n\n\t\t// Override the Monaco's default CMD+K handler with our own - Open Quick Actions.\n\t\teditor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyK, () => {\n\t\t\tengine.stores.modalStore.set({\n\t\t\t\ttype: ModalType.QuickActions,\n\t\t\t\tsource: \"shortcut\",\n\t\t\t})\n\t\t\trecord(\"ui_interaction\", { page: Pages.codeEditor, id: UIInteraction.quickActions })\n\t\t})\n\n\t\t// Hotkey: Cmd+Option+P runs the most recent plugin.\n\t\t// This replaces Monaco's default (togglePreserveCase), which also shows up when doing the action itself (like Cmd+Option+D)\n\t\t// NB: Also handled in useActionManager.tsx when the focus isn't trapped inside Monaco.\n\t\teditor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyMod.Alt | monaco.KeyCode.KeyP, () => {\n\t\t\tconst recentPlugin = engine.stores.pluginStore.getRecentPluginForMode(\"code\")\n\t\t\tif (recentPlugin) {\n\t\t\t\tengine.stores.pluginStore.openPlugin(recentPlugin, engine, { mode: \"code\" }).catch(unhandledError)\n\t\t\t}\n\t\t})\n\n\t\t// Hotkey: Cmd+Option+L toggles the development plugin.\n\t\teditor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyMod.Alt | monaco.KeyCode.KeyL, () => {\n\t\t\ttoggleQuickActionsDevPlugin(engine)\n\t\t})\n\n\t\teditor.onKeyDown(event => {\n\t\t\tsignalEditorActivity()\n\n\t\t\t// Update mouse store with modifier key state to ensure state is updated in the engine store\n\t\t\t// even when Monaco editor has focus\n\t\t\tengine.stores.mouseStore.setModifiers(event.browserEvent)\n\n\t\t\tif (isCommandKeyPressed(event) && event.browserEvent.key === \"s\") {\n\t\t\t\twindow.localStorage.setItem(DISMISSED_SAVE_TOAST_STORAGE_KEY, \"true\")\n\t\t\t\ttoast({\n\t\t\t\t\ttype: \"remove\",\n\t\t\t\t\tkey: SAVE_TOAST_KEY,\n\t\t\t\t})\n\t\t\t\tthis.props.onFileSaveRequested(this.props.file)\n\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\t\t\t}\n\n\t\t\tif (event.browserEvent.key === \"Escape\") {\n\t\t\t\t// check if autocomplete is already active\n\t\t\t\tif (document.querySelector(\".editor-widget.suggest-widget.visible\")) return\n\n\t\t\t\t// unfortunately, the hover widget responds to the escape key before us, so we can't check it's state\n\t\t\t\t// const hover = editor.getContribution(\"editor.contrib.hover\")\n\n\t\t\t\tconst action = editor.getAction(\"editor.action.triggerSuggest\")\n\t\t\t\tif (action) {\n\t\t\t\t\taction.run().then(null, unhandledError)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction toggleComment() {\n\t\t\t\tif (!editor) return\n\n\t\t\t\tconst action = editor.getAction(\"editor.action.commentLine\")\n\t\t\t\tif (!action) {\n\t\t\t\t\tlog.warn(\"No editor.action.commentLine action found\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\t// stops monaco from running the event again\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t\taction.run().then(null, unhandledError)\n\t\t\t}\n\n\t\t\t// Handle commenting out shortcut for German keyboard layout by triggering action manually\n\t\t\tif (isCommandKeyPressed(event) && event.shiftKey) {\n\t\t\t\tif (this.keyboardLayoutMap?.get(\"Minus\") === \"\u00DF\" && event.browserEvent.code === \"Digit7\") {\n\t\t\t\t\t// Chrome\n\t\t\t\t\ttoggleComment()\n\t\t\t\t} else if (\"keyIdentifier\" in event.browserEvent && event.browserEvent.keyIdentifier === \"U+002F\") {\n\t\t\t\t\t// Special solution for Safari. When holding\n\t\t\t\t\t// Cmd/Ctrl+Shift+7 on a German keyboard, it will set\n\t\t\t\t\t// keyIdentifier (non-standard) to the value for \"/\", while\n\t\t\t\t\t// all other event values will indicate \"7\". This means we\n\t\t\t\t\t// can trust this to be a real press of the actual slash key\n\t\t\t\t\t// on any layout.\n\t\t\t\t\ttoggleComment()\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\teditor.onKeyUp(event => {\n\t\t\t// Like onKeyDown, we need to update the engine store with the modifier key state\n\t\t\t// even when Monaco editor has focus\n\t\t\tengine.stores.mouseStore.setModifiers(event.browserEvent)\n\t\t})\n\n\t\teditor.onMouseDown(() => {\n\t\t\tsignalEditorActivity()\n\t\t})\n\n\t\teditor.onContextMenu(event => {\n\t\t\tconst goToDecl = editor.getAction(\"editor.action.goToDeclaration\")\n\t\t\tconst changeAll = editor.getAction(\"editor.action.changeAll\")\n\t\t\tconst searchRef = editor.getAction(\"editor.action.referenceSearch.trigger\")\n\t\t\tconst cut = editor.getAction(\"editor.action.clipboardCutAction\")\n\t\t\tconst copy = editor.getAction(\"editor.action.clipboardCopyAction\")\n\n\t\t\tconst template: MenuItemOptions[] = []\n\t\t\tconst actions = this.props.isViewOnly ? [goToDecl, searchRef] : [goToDecl, changeAll, searchRef, null, cut, copy]\n\t\t\tactions.forEach(action => {\n\t\t\t\tif (!action) return template.push({ type: \"separator\" })\n\t\t\t\treturn template.push({ label: action.label, click: () => action.run() })\n\t\t\t})\n\n\t\t\tengine.stores.contextMenuStore.show(template, { location: { x: event.event.posx, y: event.event.posy } })\n\n\t\t\tevent.event.preventDefault()\n\t\t\tevent.event.stopPropagation()\n\t\t})\n\n\t\teditor.onDidLayoutChange(layout => this.updateMinimapVisibility(layout.width))\n\t\tthis.updateMinimapVisibility(editor.getLayoutInfo().width)\n\n\t\tthis.updateListeners()\n\n\t\tthis.scheduleLayoutEditors()\n\t}\n\n\tsetDiffEditorDiv = (ref: HTMLElement | null) => {\n\t\tif (this.diffEditor) {\n\t\t\tthis.diffEditor.dispose()\n\t\t\tthis.diffEditor = null\n\t\t}\n\n\t\tthis.diffEditorDiv = ref\n\t\tif (!ref) {\n\t\t\tthis.updateListeners()\n\t\t\treturn\n\t\t}\n\n\t\tconst diffEditor = monaco.editor.createDiffEditor(ref, {\n\t\t\t...monacoEditorOptions(),\n\t\t\tenableSplitViewResizing: true,\n\t\t\treadOnly: true,\n\t\t\trenderSideBySide: true,\n\t\t})\n\t\tthis.diffEditor = diffEditor\n\n\t\tdiffEditor.onDidUpdateDiff(() => {\n\t\t\tsignalEditorActivity()\n\t\t})\n\n\t\tthis.updateListeners()\n\t\tthis.scheduleLayoutEditors()\n\t}\n\n\tconfigurationChanged = () => {\n\t\tif (!this.editor) return\n\n\t\tconst fontSize = engine.stores.persistedUserDefaults.editorFontSize\n\t\tconst configuration = this.editor.getOptions()\n\t\tconst fontInfo = configuration.get(EditorAPI.EditorOption.fontInfo)\n\t\tif (fontInfo.fontSize === fontSize) return\n\n\t\tconst lineHeight = lineHeightForFontSize(fontSize)\n\t\tthis.editor.updateOptions({ fontSize, lineHeight })\n\t}\n\n\t/**\n\t * Apply any pending scroll position from the CodeEditorStore\n\t */\n\tprivate applyPendingScrollPosition = () => {\n\t\tif (!this.editor) return\n\n\t\tconst { pendingScrollPosition } = engine.stores.codeEditorStore\n\t\tif (!pendingScrollPosition) return\n\n\t\tconst {\n\t\t\tstartLine,\n\t\t\tstartColumn = 1,\n\t\t\tendLine = startLine,\n\t\t\tendColumn = Number.POSITIVE_INFINITY,\n\t\t} = pendingScrollPosition\n\n\t\tconst selection = new monaco.Range(startLine, startColumn, endLine, endColumn)\n\n\t\tthis.editor.setSelection(selection)\n\t\tthis.editor.revealRangeInCenter(selection, monaco.editor.ScrollType.Smooth)\n\n\t\tengine.stores.codeEditorStore.clearPendingScrollPosition()\n\t}\n\n\tlayoutEditors = () => {\n\t\tthis.diffEditor?.layout()\n\t\tthis.editor?.layout()\n\t}\n\n\tprivate scheduleLayoutEditors = () => {\n\t\tif (this.layoutAnimationFrame !== undefined) return\n\n\t\tthis.layoutAnimationFrame = requestAnimationFrame(() => {\n\t\t\tthis.layoutAnimationFrame = undefined\n\t\t\tthis.layoutEditors()\n\t\t})\n\t}\n\n\tprivate updateMinimapVisibility(width: number) {\n\t\tconst minimapVisible = width >= minimapMinWidth\n\t\tif (this.minimapVisible === minimapVisible) return\n\t\tthis.minimapVisible = minimapVisible\n\t\tthis.editor?.updateOptions({\n\t\t\tminimap: { enabled: minimapVisible },\n\t\t\textraEditorClassName: getEditorClassName(minimapVisible),\n\t\t})\n\t}\n\n\t#listenersAdded = false\n\tupdateListeners = () => {\n\t\tif (!this.#listenersAdded && (this.diffEditor || this.editor)) {\n\t\t\twindow.addEventListener(\"resize\", this.scheduleLayoutEditors)\n\t\t\tthis.userDefaultsObserverToken = engine.scheduler.changes.observe(\n\t\t\t\tEngineChange.UserDefaultsStore,\n\t\t\t\tthis.configurationChanged,\n\t\t\t)\n\t\t\tstartEditorActivityCounter()\n\t\t\tthis.#listenersAdded = true\n\t\t} else if (this.#listenersAdded && !this.diffEditor && !this.editor) {\n\t\t\twindow.removeEventListener(\"resize\", this.scheduleLayoutEditors)\n\t\t\tif (this.userDefaultsObserverToken) engine.scheduler.changes.removeObserver(this.userDefaultsObserverToken)\n\t\t\tthis.#listenersAdded = false\n\t\t}\n\t}\n\n\toverride shouldComponentUpdate(nextProps: MonacoEditorProps) {\n\t\tif (isShallowEqual(this.props, nextProps)) return false\n\n\t\tconst shouldLayout =\n\t\t\tnextProps.codeEditorPreviewWidth !== this.props.codeEditorPreviewWidth ||\n\t\t\tnextProps.previewDisplayed !== this.props.previewDisplayed ||\n\t\t\tnextProps.showCodeAgentPanel !== this.props.showCodeAgentPanel ||\n\t\t\tnextProps.codeAgentPanelWidth !== this.props.codeAgentPanelWidth ||\n\t\t\tnextProps.versionHistoryActive !== this.props.versionHistoryActive\n\n\t\tif (shouldLayout) {\n\t\t\tthis.scheduleLayoutEditors()\n\t\t}\n\n\t\tif (this.diffEditor && nextProps.versionHistoryDiffFile) {\n\t\t\tconst diffFileModel = monaco.editor.createModel(nextProps.versionHistoryDiffFile, \"typescript\")\n\n\t\t\tthis.diffEditor.setModel({\n\t\t\t\toriginal: diffFileModel,\n\t\t\t\tmodified: nextProps.file.model,\n\t\t\t})\n\n\t\t\t// We have to remove editor top margin zones otherwise monaco considers it a \"diff\"\n\t\t\tconst originalEditorTopViewZoneId = this.diffEditorViewZoneIDs.original\n\t\t\tconst modifiedEditorTopViewZoneId = this.diffEditorViewZoneIDs.modified\n\n\t\t\tif (originalEditorTopViewZoneId) {\n\t\t\t\tthis.diffEditor.getOriginalEditor().changeViewZones(a => removeTopViewZone(a, originalEditorTopViewZoneId))\n\t\t\t}\n\n\t\t\tif (modifiedEditorTopViewZoneId) {\n\t\t\t\tthis.diffEditor.getModifiedEditor().changeViewZones(a => removeTopViewZone(a, modifiedEditorTopViewZoneId))\n\t\t\t}\n\n\t\t\tthis.diffEditor\n\t\t\t\t.getOriginalEditor()\n\t\t\t\t.changeViewZones(a => (this.diffEditorViewZoneIDs.original = setTopViewZone(a)))\n\n\t\t\tthis.diffEditor\n\t\t\t\t.getModifiedEditor()\n\t\t\t\t.changeViewZones(a => (this.diffEditorViewZoneIDs.modified = setTopViewZone(a)))\n\t\t}\n\n\t\treturn true\n\t}\n\n\toverride getSnapshotBeforeUpdate(prevProps: MonacoEditorProps): MonacoEditorSnapshot {\n\t\treturn {\n\t\t\tisPropsShallowEqual: isShallowEqual(prevProps, this.props),\n\t\t\teditorViewState: this.editor ? this.editor.saveViewState() : null,\n\t\t}\n\t}\n\n\tsetViewOnlyMode(isViewOnly: boolean) {\n\t\tthis.editor?.updateOptions({ readOnly: isViewOnly })\n\n\t\tif (isViewOnly) {\n\t\t\ttoast({\n\t\t\t\ttype: \"add\",\n\t\t\t\tvariant: \"info\",\n\t\t\t\tprimaryText: \"Read-only editor.\",\n\t\t\t\tsecondaryText: \"You cannot edit files.\",\n\t\t\t\tduration: Infinity,\n\t\t\t\tkey: viewOnlyToastKey,\n\t\t\t})\n\t\t} else {\n\t\t\ttoast({ type: \"remove\", key: viewOnlyToastKey })\n\t\t}\n\n\t\t// Note: diffEditor is always read only now, but we'd need to update it here if we change that.\n\t}\n\n\toverride componentDidUpdate(prevProps: MonacoEditorProps, _prevState: unknown, snapshot: MonacoEditorSnapshot) {\n\t\tif (!snapshot.isPropsShallowEqual) {\n\t\t\tconst isRenamed = prevProps.file.isDisposed() && prevProps.file.id === this.props.file.id\n\n\t\t\tif (isRenamed) {\n\t\t\t\t// TODO: this doesn't currently work as the previous editor has already been destroyed.\n\t\t\t\t// Stores the editorState from the file before renaming to the new file that is generated by a rename.\n\t\t\t\tthis.props.viewStateManager.addEditorViewState(this.props.file.id, snapshot.editorViewState)\n\t\t\t} else {\n\t\t\t\t// Stores the editor state of the previous file, in case of file changes etc.\n\t\t\t\tprevProps.viewStateManager.addEditorViewState(prevProps.file.id, snapshot.editorViewState)\n\t\t\t}\n\n\t\t\tif (!prevProps.file.isDisposed()) {\n\t\t\t\tprevProps.onFileSaveRequested(prevProps.file)\n\t\t\t}\n\t\t}\n\n\t\tconst { isViewOnly, file, releaseLock } = this.props\n\n\t\tconst model = file.model\n\t\tif (this.editor && model !== this.editor.getModel()) {\n\t\t\tthis.editorSetModel(this.props.file.model)\n\t\t\t// Defer focusing the editor to the next macrotask to avoid the situation which causes it\n\t\t\t// to intercept the \"Enter\" key that submits file rename and insert a new line to the renamed file.\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.editor?.focus()\n\t\t\t\tthis.restoreEditorViewState()\n\t\t\t}, 0)\n\t\t}\n\n\t\t// If switching files, release the old lock and check the new one\n\t\tif (prevProps.file !== file) {\n\t\t\t// Don't reset the lock if the user is a viewer\n\t\t\tif (!isViewOnly) {\n\t\t\t\treleaseLock(prevProps.file.id)\n\t\t\t\tvoid this.checkLock()\n\t\t\t}\n\t\t}\n\n\t\tif (prevProps.isViewOnly !== isViewOnly) {\n\t\t\tthis.setViewOnlyMode(isViewOnly)\n\t\t\tif (isViewOnly) {\n\t\t\t\tthis.endLockSession()\n\t\t\t} else {\n\t\t\t\tthis.initLockSession()\n\t\t\t}\n\t\t}\n\t}\n\n\toverride render() {\n\t\tconst previewDisplayed = this.props.previewDisplayed && this.props.codeEditorPreviewWidth > 0\n\t\tconst { showCodeAgentPanel } = this.props\n\t\tlet widthClass: string | undefined\n\t\tif (previewDisplayed && showCodeAgentPanel) {\n\t\t\twidthClass = classNames.containerWithPreviewAndAgent\n\t\t} else if (previewDisplayed) {\n\t\t\twidthClass = classNames.containerWithPreview\n\t\t} else if (showCodeAgentPanel) {\n\t\t\twidthClass = classNames.containerWithAgent\n\t\t}\n\n\t\treturn (\n\t\t\t<div className={cx(classNames.container, appPointerEvents, widthClass)} style={editorIcons}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cx(\"editor\", classNames.editor, this.props.versionHistoryActive && classNames.hideEditor)}\n\t\t\t\t\tref={this.setEditorDiv}\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\tclassName={cx(\"editor\", classNames.editor, !this.props.versionHistoryActive && classNames.hideEditor)}\n\t\t\t\t\tref={this.setDiffEditorDiv}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t)\n\t}\n}\n\nfunction getEditorClassName(minimapVisible: boolean) {\n\treturn cx(classNames.monacoEditor, classNames.hideHorizontalScrollbar, minimapVisible && classNames.hideScrollbar)\n}\n\nfunction monacoEditorOptions(): EditorAPI.IStandaloneEditorConstructionOptions {\n\tconst fontSize = engine.stores.persistedUserDefaults.editorFontSize\n\treturn {\n\t\t// I don\u2019t know how this works and why the equivalent\n\t\t//   bracketPairColorization: { enabled: false }\n\t\t// doesn\u2019t do anything, but this seems to be the only convenient way to disable bracket colorization.\n\t\t//\n\t\t// Another working alternative is to call\n\t\t//   model.updateOptions({\n\t\t//     bracketColorizationOptions: { enabled: false, independentColorPoolPerBracketType: false },\n\t\t//   })\n\t\t// on the model, but this is annoying since it needs to be called every time the model changes.\n\t\t//\n\t\t// https://stackoverflow.com/a/69631969/1192426\n\t\t//\n\t\t// @ts-expect-error See above\n\t\t\"bracketPairColorization.enabled\": false,\n\t\tcontextmenu: false,\n\t\tdisableMonospaceOptimizations: true, // somehow monaco is broken for Input Mono\n\t\textraEditorClassName: classNames.monacoEditor,\n\t\tfolding: false,\n\t\tfontFamily: fonts.family.monospace,\n\t\tfontSize,\n\t\tglyphMargin: true,\n\t\tlineDecorationsWidth: 28, // Left margin for code lines\n\t\tlineHeight: lineHeightForFontSize(fontSize),\n\t\tlineNumbersMinChars: 4,\n\t\tminimap: { enabled: false },\n\t\trenderWhitespace: \"none\",\n\t\troundedSelection: false,\n\t\tscrollbar: {\n\t\t\tuseShadows: false,\n\t\t\tverticalScrollbarSize: 6,\n\t\t\thorizontalScrollbarSize: 6,\n\t\t},\n\t\tstickyScroll: { enabled: false },\n\t\tsuggest: {\n\t\t\tshowIcons: true,\n\t\t},\n\t\twordWrap: \"bounded\",\n\t\twordWrapColumn: 120,\n\t}\n}\n\nconst RELATIVE_IMPORT_ERRORS_OWNER = \"framer-relative-imports\"\n\n/**\n *  Async validation that uses the our compiler to analyse a files relative imports and determine if any of them are invalid.\n *\n * Note: by opting out of the default syntax for relative imports we are breaking the typescript language servers\n *       ability to identify the models and thus go to definition is broken at this time\n */\nasync function findRelativeImportErrors(model: monaco.editor.ITextModel): Promise<monaco.editor.IMarkerData[]> {\n\tconst markers: monaco.editor.IMarkerData[] = []\n\n\tif (!supportsTypeAnalysisAndLinting(model.getLanguageId())) return markers\n\n\tconst result = await analyzeModuleImports(model.getValue())\n\tif (!result.ok) return markers\n\n\tconst imports = result.value\n\n\tif (!imports.relative.length) return markers\n\n\tfor (const relativeImport of imports.relative) {\n\t\tconst line = relativeImport.specifierLine + 1\n\t\t// don't adjust by (+1) as we want to start the line under the \" like the default TS errors\n\t\tconst start = relativeImport.specifierCol\n\t\t// +2 to account for closing opening and closing \"\n\t\tconst length = relativeImport.specifier.length + 2\n\n\t\tconst typeSlashName = normalizePath(relativeImport.specifier, model.uri.path)\n\n\t\t// We need to check against `moduleStore`, not `fileManager`,\n\t\t// because the latter is not aware of the local smart components, only code modules.\n\t\tif (typeSlashName && engine.stores.modulesStore.localModules.has(typeSlashName)) continue\n\n\t\tif (\n\t\t\ttypeSlashName &&\n\t\t\t!hasValidExtension(relativeImport.specifier) &&\n\t\t\t!typeSlashName.includes(`${ModuleType.Canvas}/`)\n\t\t) {\n\t\t\t// The module might not be found because the file extension is omitted.\n\t\t\t// TODO: suggest the actual extension based on the files we know about.\n\t\t\tmarkers.push({\n\t\t\t\tcode: \"f1\", // Note, error code is visible to user after message\n\t\t\t\tseverity: monaco.MarkerSeverity.Error,\n\t\t\t\tstartLineNumber: line,\n\t\t\t\tstartColumn: start,\n\t\t\t\tendLineNumber: line,\n\t\t\t\tendColumn: start + length,\n\t\t\t\tmessage: \"Relative imports require one of these extensions: tsx, ts, jsx, js.\",\n\t\t\t})\n\t\t} else {\n\t\t\tmarkers.push({\n\t\t\t\tcode: \"f2\", // Note, error code is visible to user after message\n\t\t\t\tseverity: monaco.MarkerSeverity.Error,\n\t\t\t\tstartLineNumber: line,\n\t\t\t\tstartColumn: start,\n\t\t\t\tendLineNumber: line,\n\t\t\t\tendColumn: start + length,\n\t\t\t\tmessage: `Cannot find module '${relativeImport.specifier}'.`,\n\t\t\t})\n\t\t}\n\t}\n\treturn markers\n}\n\nfunction runCustomValidation(model: monaco.editor.ITextModel) {\n\tsynchronizeDebounced(`${RELATIVE_IMPORT_ERRORS_OWNER}:${model.uri}`, 500, async signal => {\n\t\tconst relativeImportMarkers = await findRelativeImportErrors(model)\n\t\tif (signal.aborted) return\n\n\t\t// we define a unique owner instead of using the default mark to prevent duplicates appearing in the UI\n\t\tmonaco.editor.setModelMarkers(model, RELATIVE_IMPORT_ERRORS_OWNER, relativeImportMarkers)\n\t}).catch(() => {\n\t\t// ignore the errors\n\t})\n}\n", "import { triggerEditorActive6030Event } from \"@framerjs/framer-events\"\n\nconst intervalTime = 5000\n\nlet started = false\nlet lastActivity = 0\nlet totalActivity = 0\n\nexport function signalEditorActivity() {\n\tlastActivity = Date.now()\n}\n\nexport function startEditorActivityCounter() {\n\tif (started) return\n\tstarted = true\n\n\tsetInterval(() => {\n\t\tconst now = Date.now()\n\t\tconst idle = (now - lastActivity) / 1000\n\t\tif (idle > 30) return\n\n\t\ttotalActivity += intervalTime / 1000\n\t\tif (totalActivity < 60) return\n\n\t\ttotalActivity -= 60\n\t\ttriggerEditorActive6030Event({})\n\t}, intervalTime)\n}\n", "import type * as monaco from \"monaco-editor\"\nimport { DynamicViewOverlay } from \"monaco-editor/esm/vs/editor/browser/view/dynamicViewOverlay.js\"\nimport { MarginViewOverlays } from \"monaco-editor/esm/vs/editor/browser/view/viewOverlays.js\"\nimport { log } from \"./logger.ts\"\n\nclass ErrorLineMarginOverlay extends DynamicViewOverlay {\n\terrorLines = new Set<number>()\n\tconstructor(readonly _context: any) {\n\t\tsuper()\n\t\tthis._context.addEventHandler(this)\n\t}\n\tdispose(): void {\n\t\tthis._context.removeEventHandler(this)\n\t\tsuper.dispose()\n\t}\n\tpublic onConfigurationChanged(): boolean {\n\t\treturn true\n\t}\n\tpublic onDecorationsChanged(): boolean {\n\t\treturn true\n\t}\n\tpublic onFlushed(): boolean {\n\t\treturn true\n\t}\n\tpublic onLinesChanged(): boolean {\n\t\treturn true\n\t}\n\tpublic onLinesDeleted(): boolean {\n\t\treturn true\n\t}\n\tpublic onLinesInserted(): boolean {\n\t\treturn true\n\t}\n\tpublic onScrollChanged(e: any): boolean {\n\t\treturn e.scrollTopChanged\n\t}\n\tpublic onZonesChanged(): boolean {\n\t\treturn true\n\t}\n\tprepareRender(ctx: any): void {\n\t\tthis.errorLines.clear()\n\t\tconst decorations = ctx.getDecorationsInViewport()\n\t\tdecorations.forEach((d: monaco.editor.IModelDeltaDecoration) => {\n\t\t\tif (d.options.isWholeLine && d.options.className === \"runtimeErrorLine\") {\n\t\t\t\tthis.errorLines.add(d.range.startLineNumber)\n\t\t\t}\n\t\t})\n\t}\n\trender(startLineNumber: number, lineNumber: number): string {\n\t\tif (!this.errorLines.has(lineNumber)) return \"\"\n\t\treturn \"<div class='runtimeErrorLine' style='position:absolute;width:100%;height:100%'></div>\"\n\t}\n}\n\nexport function addErrorLineMarginOverlay(editor: monaco.editor.ICodeEditor) {\n\tconst expando = editor as any\n\ttry {\n\t\tif (!expando._modelData) return\n\t\tconst view = expando._modelData.view\n\t\tif (view._viewParts.find((p: any) => p instanceof ErrorLineMarginOverlay)) return\n\t\tconst marginView = view._viewParts.find((p: any) => p instanceof MarginViewOverlays)\n\t\tconst overlay = new ErrorLineMarginOverlay(view._context)\n\t\tmarginView._dynamicOverlays.unshift(overlay)\n\t} catch (e) {\n\t\tlog.reportError(e)\n\t}\n}\n", "function url(type: string, text: string): string {\n\treturn `url(data:${type};charset=utf-8;base64,${btoa(text)})`\n}\n\nexport function svgURL(text: string): string {\n\treturn url(\"image/svg+xml\", text)\n}\n", "import type { CSSProperties } from \"@framerjs/fresco\"\nimport { svgURL } from \"utils/svgURL.ts\"\nimport { iconVariables } from \"./MonacoEditor.styles.ts\"\n\n// These icons cannot be moved to the CSS file, because Linaria can't handle base64 generation of the SVGs\nconst svgUrls = {\n\ticonFunction: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 8 3 L 3.5 5.5 L 3.5 10.5 L 8 13 L 12.5 10.5 L 12.5 5.5 Z\" fill=\"rgba(187, 136, 255, 1.00)\"></path><path d=\"M 8 3 L 3.5 5.5 L 8 8 L 12.5 5.5 Z\" fill=\"rgb(255, 255, 255)\" opacity=\"0.6\"></path></svg>`,\n\t),\n\ticonVariable: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><g transform=\"translate(2.5 3)\"><path d=\"M 6 0 L 0 3.5 L 0 7.5 L 4.5 10 L 10.5 6.5 L 10.5 2.5 Z\" fill=\"rgba(1, 187, 255, 1.00)\"></path><path d=\"M 6 0 L 0 3.5 L 4.5 6 L 10.5 2.5 Z\" fill=\"rgb(255, 255, 255)\" opacity=\"0.6\"></path></g></svg>`,\n\t),\n\ticonClass: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 0 0 L 7 0 L 7 7 L 0 7 Z\" transform=\"translate(4.379 4.5) rotate(45 3.5 3.5)\" fill=\"rgba(255, 204, 102, 1.00)\"></path></svg>`,\n\t),\n\ticonFile: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 8 3 C 10.761 3 13 5.239 13 8 C 13 10.761 10.761 13 8 13 C 5.239 13 3 10.761 3 8 C 3 5.239 5.239 3 8 3 Z M 6 8 C 6 9.105 6.895 10 8 10 C 9.105 10 10 9.105 10 8 C 10 6.895 9.105 6 8 6 C 6.895 6 6 6.895 6 8 Z\" fill=\"rgba(1, 187, 255, 1.00)\"></path></svg>`,\n\t),\n\ticonModule: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 7.879 3.05 L 7.879 12.95 L 2.929 8 Z\" fill=\"rgba(187, 187, 187, 1.00)\"></path><path d=\"M 7.929 3.05 L 7.929 12.95 L 12.879 8 Z\" fill=\"rgba(187, 187, 187, 1.00)\" opacity=\"0.5\"></path></svg>`,\n\t),\n\ticonProperty: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 13.355 6.141 L 10.855 10.471 L 7.424 10.414 L 5.381 13.953 L 2.783 12.453 L 4.826 8.914 L 3.061 5.971 L 5.561 1.641 L 8.993 1.697 L 6.783 5.524 L 9.381 7.024 L 11.591 3.197 Z\" fill=\"#BBBBBB\"></path></svg>`,\n\t),\n\ticonValue: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 6 3 L 13 3 L 13 10 L 6 10 Z\" fill=\"rgba(1, 187, 255, 1.00)\" opacity=\"0.4\"></path><path d=\"M 3 6 L 10 6 L 10 13 L 3 13 Z\" fill=\"rgba(1, 187, 255, 1.00)\"></path></svg>`,\n\t),\n\ticonKeyword: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 3 9 L 10 9 L 10 12 L 3 12 Z\" fill=\"rgba(255, 204, 102, 1.00)\" opacity=\"0.6\"></path><path d=\"M 3 4 L 13 4 L 13 7 L 3 7 Z\" fill=\"rgba(255, 204, 102, 1.00)\"></path></svg>`,\n\t),\n\ticonKeywordDarkMode: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 3 9 L 10 9 L 10 12 L 3 12 Z\" fill=\"rgba(255, 204, 102, 1.00)\" opacity=\"0.4\"></path><path d=\"M 3 4 L 13 4 L 13 7 L 3 7 Z\" fill=\"rgba(255, 204, 102, 1.00)\"></path></svg>`,\n\t),\n\ticonUnit: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><g transform=\"translate(2.5 5)\"><path d=\"M 0 0 L 11 0 L 11 6 L 0 6 Z\" fill=\"rgba(255, 204, 102, 1.00)\"></path><path d=\"M 2 0 L 3 0 L 3 3 L 2 3 Z\" fill=\"hsl(0, 0%, 0%)\" opacity=\"0.4\"></path><path d=\"M 8 0 L 9 0 L 9 3 L 8 3 Z\" fill=\"hsl(0, 0%, 0%)\" opacity=\"0.4\"></path><path d=\"M 5 0 L 6 0 L 6 3 L 5 3 Z\" fill=\"hsl(0, 0%, 0%)\" opacity=\"0.4\"></path></g></svg>`,\n\t),\n\ticonSnippet: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 4 8 L 12 8 L 12 12 L 4 12 Z\" fill=\"rgba(1, 187, 255, 1.00)\" opacity=\"0.4\"></path><path d=\"M 4 4 L 12 4 L 12 8 L 4 8 Z\" fill=\"rgba(1, 187, 255, 1.00)\"></path><path d=\"M 4 4 L 12 4 L 12 12 L 4 12 Z\" fill=\"rgba(187, 136, 255, 1.00)\"></path><path d=\"M 4 8 L 12 8 L 12 12 L 4 12 Z\" fill=\"rgb(255, 255, 255)\" opacity=\"0.6\"></path></svg>`,\n\t),\n\ticonText: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 6.5 4 L 11 12 L 2 12 Z\" fill=\"rgba(1, 187, 255, 1.00)\"></path><path d=\"M 6.5 4 L 10.125 4 C 11.23 4 12.125 4.895 12.125 6 C 12.125 7.105 11.23 8 10.125 8 L 12 8 C 13.105 8 14 8.895 14 10 C 14 11.105 13.105 12 12 12 L 6.5 12 Z\" fill=\"rgba(1, 187, 255, 1.00)\" opacity=\"0.5\"></path></svg>`,\n\t),\n\ticonColor: svgURL(\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path d=\"M 8 3 C 9.105 3 10 3.895 10 5 C 10 6.105 9.105 7 8 7 C 6.895 7 6 6.105 6 5 C 6 3.895 6.895 3 8 3 Z\" fill=\"rgba(1, 187, 255, 1.00)\"></path><path d=\"M 5 8 C 6.105 8 7 8.895 7 10 C 7 11.105 6.105 12 5 12 C 3.895 12 3 11.105 3 10 C 3 8.895 3.895 8 5 8 Z\" fill=\"rgba(255, 204, 102, 1.00)\"></path><path d=\"M 11 8 C 12.105 8 13 8.895 13 10 C 13 11.105 12.105 12 11 12 C 9.895 12 9 11.105 9 10 C 9 8.895 9.895 8 11 8 Z\" fill=\"rgba(187, 136, 255, 1.00)\"></path></svg>`,\n\t),\n}\n\nexport const editorIcons = {\n\t[iconVariables.iconFunction]: svgUrls.iconFunction,\n\t[iconVariables.iconVariable]: svgUrls.iconVariable,\n\t[iconVariables.iconClass]: svgUrls.iconClass,\n\t[iconVariables.iconFile]: svgUrls.iconFile,\n\t[iconVariables.iconModule]: svgUrls.iconModule,\n\t[iconVariables.iconProperty]: svgUrls.iconProperty,\n\t[iconVariables.iconValue]: svgUrls.iconValue,\n\t[iconVariables.iconKeyword]: svgUrls.iconKeyword,\n\t[iconVariables.iconUnit]: svgUrls.iconUnit,\n\t[iconVariables.iconSnippet]: svgUrls.iconSnippet,\n\t[iconVariables.iconText]: svgUrls.iconText,\n\t[iconVariables.iconColor]: svgUrls.iconColor,\n\t[iconVariables.iconKeywordDarkMode]: svgUrls.iconKeywordDarkMode,\n} as CSSProperties\n", "import type { LocalModuleId } from \"@framerjs/shared\"\nimport {\n\tassert,\n\tDEPENDENCIES_FILE_ID,\n\tDEPENDENCIES_MODULE_TYPE_SLASH_NAME,\n\tIMPORT_MAP_FILE_ID,\n\tModuleType,\n\tasLocalId,\n\tassertNever,\n\tgetLogger,\n\tisDependenciesFileId,\n\tunhandledError,\n} from \"@framerjs/shared\"\nimport { errorKey } from \"code-editor/loadingErrorToast.ts\"\nimport engine from \"document/engine.ts\"\nimport {\n\ttype ModulesStorageListener,\n\ttype ModulesStorageStateSnapshot,\n\tisEditableModuleEntry,\n} from \"modules/ModulesStorage.ts\"\nimport type { InstallDescriptor } from \"modules/importMapManager.ts\"\nimport type { DependenciesMap } from \"modules/types.ts\"\nimport { splitTypeSlashName } from \"modules/utils.ts\"\nimport { updateCodeFileModule } from \"utils/codeFiles.ts\"\nimport { stripTrailingPunctuation } from \"utils/stripTrailingPunctuation.ts\"\nimport { isString } from \"utils/typeChecks.ts\"\nimport { toast } from \"web/lib/toaster.ts\"\nimport { EditableFile } from \"./EditableFile.ts\"\nimport { Folder } from \"./Folder.ts\"\nimport type { MonacoModelFactory } from \"./MonacoModelFactory.tsx\"\nimport { setupAutomaticTypeAcquisition } from \"./workers/codeCheckerAndAta.ts\"\n\nconst log = getLogger(\"file-manager\")\n\ntype ChangeHandler = () => void\ntype SyncingStatusHandler = (syncing: boolean) => void\n\n/**\n * Manages files for the code editor. If you need to operate on the raw files use ModulesStore instead.\n */\ninterface ModulesStorageSubscription {\n\treadonly initialized: boolean\n\twhenInitialized(): Promise<void>\n\tsubscribeToModulesStorage(listener: ModulesStorageListener): () => void\n}\n\nexport class FileManager {\n\tupdate = 0\n\tpackageJsonDependencies: string[] = []\n\tprivate serverURL: string | null = null\n\tprivate changeHandlers: ChangeHandler[] = []\n\tprivate files: EditableFile[] = []\n\n\tprivate syncOpsInProgress = 0\n\tprivate syncingStatusChangeHandlers: Set<SyncingStatusHandler> = new Set()\n\n\t// Subscriptions\n\tprivate readonly unsubscribeFromModulesStorage: (() => void) | undefined\n\n\tpublic readonly root = new Folder(\".\")\n\n\tpublic readonly acquireNpmTypes: (code: string) => Promise<void>\n\n\tconstructor(\n\t\treadonly factory: MonacoModelFactory,\n\t\tprivate readonly modulesStorage: ModulesStorageSubscription,\n\t) {\n\t\tthis.acquireNpmTypes = configureAutomaticTypeAcquisition(factory)\n\n\t\t// Files\n\t\tthis.unsubscribeFromModulesStorage = this.modulesStorage.subscribeToModulesStorage(\n\t\t\t(snapshot: ModulesStorageStateSnapshot) => {\n\t\t\t\tfor (const patch of snapshot.metadata.patches) {\n\t\t\t\t\tconst typeSlashName = patch.path[0]\n\t\t\t\t\tassert(isString(typeSlashName), \"First element of patch.path must be a string\")\n\n\t\t\t\t\tswitch (patch.op) {\n\t\t\t\t\t\tcase \"add\":\n\t\t\t\t\t\tcase \"replace\": {\n\t\t\t\t\t\t\t// Dependency files are on a single module and must be split into two editable files\n\t\t\t\t\t\t\tif (typeSlashName === DEPENDENCIES_MODULE_TYPE_SLASH_NAME) {\n\t\t\t\t\t\t\t\tassert(snapshot.dependenciesModule, `dependencies module is expected to be defined`)\n\n\t\t\t\t\t\t\t\tconst { importMapContent, dependenciesMapContent } = snapshot.dependenciesModule\n\t\t\t\t\t\t\t\tconst dependencyModules = [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: asLocalId(IMPORT_MAP_FILE_ID),\n\t\t\t\t\t\t\t\t\t\tpath: IMPORT_MAP_FILE_ID,\n\t\t\t\t\t\t\t\t\t\tcontent: importMapContent,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: asLocalId(DEPENDENCIES_FILE_ID),\n\t\t\t\t\t\t\t\t\t\tpath: DEPENDENCIES_FILE_ID,\n\t\t\t\t\t\t\t\t\t\tcontent: dependenciesMapContent,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t] as const\n\n\t\t\t\t\t\t\t\tfor (const { id, path, content } of dependencyModules) {\n\t\t\t\t\t\t\t\t\tconst existing = this.getById(id)\n\t\t\t\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\t\t\t\tif (!existing.isEdited() && existing.content !== content) {\n\t\t\t\t\t\t\t\t\t\t\texisting.updateContentFromRemote(content)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst file = new EditableFile(this, id, path, content, false)\n\t\t\t\t\t\t\t\t\t\tthis.files.push(file)\n\t\t\t\t\t\t\t\t\t\tfile\n\t\t\t\t\t\t\t\t\t\t\t.applyContentEdits()\n\t\t\t\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tfile.setEdited(false)\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t.catch(unhandledError)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst moduleEntry = snapshot.modules.get(typeSlashName)\n\t\t\t\t\t\t\tassert(moduleEntry, typeSlashName, \"is expected to be in modules\")\n\t\t\t\t\t\t\tif (!isEditableModuleEntry(moduleEntry)) break\n\n\t\t\t\t\t\t\tconst isRenamed = patch.op === \"add\" && !!snapshot.deletedLocalIdsByTypeSlashNames[typeSlashName]\n\n\t\t\t\t\t\t\tif (!isVisibleFile(typeSlashName)) {\n\t\t\t\t\t\t\t\tthis.factory.upsert(typeSlashName, moduleEntry.sourceContent)\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (patch.op === \"add\") {\n\t\t\t\t\t\t\t\tlet content = moduleEntry.sourceContent\n\t\t\t\t\t\t\t\tlet hasUnsavedContentFromRename = false\n\t\t\t\t\t\t\t\tif (isRenamed) {\n\t\t\t\t\t\t\t\t\tconst prevFile = this.getById(moduleEntry.localId)\n\t\t\t\t\t\t\t\t\tif (prevFile?.isEdited()) {\n\t\t\t\t\t\t\t\t\t\t// TODO for renames, we should set isEditing on the new file once its created!\n\t\t\t\t\t\t\t\t\t\tcontent = prevFile.model.getValue()\n\t\t\t\t\t\t\t\t\t\thasUnsavedContentFromRename = true\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst file = new EditableFile(\n\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\tmoduleEntry.localId,\n\t\t\t\t\t\t\t\t\ttypeSlashName,\n\t\t\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\t\t\thasUnsavedContentFromRename,\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\tfile.analyzeImportsAndLoadNpmDependencies().then(\n\t\t\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\t\t\tlog.debug(\"Analyzed and loaded NPM dependencies and their types for\", file.path)\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\terr => {\n\t\t\t\t\t\t\t\t\t\tlog.warn(\"Failed to analyze imports and load dependencies for\", file.path, err)\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\tthis.files.push(file)\n\t\t\t\t\t\t\t\t// Just to format the content. which is not necessary if it was a rename\n\t\t\t\t\t\t\t\tif (!isRenamed) {\n\t\t\t\t\t\t\t\t\tfile\n\t\t\t\t\t\t\t\t\t\t.applyContentEdits()\n\t\t\t\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\t\t\t\tfile.setEdited(false)\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t.catch(unhandledError)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst file = this.getById(moduleEntry.localId)\n\t\t\t\t\t\t\t\tif (!file) break\n\n\t\t\t\t\t\t\t\tif (file.content === moduleEntry.sourceContent) break\n\n\t\t\t\t\t\t\t\tif (!file.isEdited()) {\n\t\t\t\t\t\t\t\t\tfile.updateContentFromRemote(moduleEntry.sourceContent)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"remove\": {\n\t\t\t\t\t\t\tconst id = snapshot.deletedLocalIdsByTypeSlashNames[typeSlashName]\n\t\t\t\t\t\t\tassert(id, typeSlashName, \"is expected to be in deletedLocalIdsByTypeSlashNames\")\n\n\t\t\t\t\t\t\tif (!isVisibleFile(typeSlashName)) {\n\t\t\t\t\t\t\t\tthis.factory.getModel(typeSlashName)?.dispose()\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst fileIndex = this.files.findIndex(f => f.id === id)\n\t\t\t\t\t\t\tconst file = this.files[fileIndex]\n\t\t\t\t\t\t\tif (!file) break\n\n\t\t\t\t\t\t\tfile.dispose()\n\t\t\t\t\t\t\tthis.files.splice(fileIndex, 1)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tassertNever(patch.op)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.recreateFoldersStructure()\n\t\t\t\tif (snapshot.metadata.patches.length > 0) {\n\t\t\t\t\tthis.notifyOnChangeHandlers()\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.unsubscribeFromModulesStorage?.()\n\t}\n\n\tpublic get initialized(): boolean {\n\t\treturn this.modulesStorage.initialized\n\t}\n\n\tpublic whenInitialized(): Promise<void> {\n\t\treturn this.modulesStorage.whenInitialized()\n\t}\n\n\tpublic hasLocalChanges(): boolean {\n\t\treturn engine.stores.modulesStore.hasLocalCodeFileChanges()\n\t}\n\n\t// local changes\n\n\tpublic async save(file: EditableFile): Promise<void> {\n\t\tconst toastKey = `codeFileError_${file.path}`\n\n\t\tawait file.applyContentEdits()\n\t\tthis.incrementSyncOps()\n\n\t\tconst fileSavePromise = isDependenciesFileId(file.id)\n\t\t\t? this.updateDependenciesSource(file.id, file.content)\n\t\t\t: updateCodeFileModule(engine.stores.modulesStore, file.id, file.content)\n\n\t\tfileSavePromise\n\t\t\t.then(() => {\n\t\t\t\tfile.setEdited(false)\n\n\t\t\t\ttoast({\n\t\t\t\t\ttype: \"remove\",\n\t\t\t\t\tkey: toastKey,\n\t\t\t\t})\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tthis.decrementSyncOps()\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tlog.reportError(err, { operation: \"save\", path: file.path })\n\t\t\t\tconst errorDetail = err.message ? stripTrailingPunctuation(String(err.message)) : \"Unknown error\"\n\n\t\t\t\ttoast({\n\t\t\t\t\ttype: \"add\",\n\t\t\t\t\tvariant: \"error\",\n\t\t\t\t\tprimaryText: \"Failed to save file.\",\n\t\t\t\t\tsecondaryText: `${errorDetail}.`,\n\t\t\t\t\tkey: toastKey,\n\t\t\t\t\ticon: \"error\",\n\t\t\t\t\tshowCloseButton: \"always\",\n\t\t\t\t\tduration: Infinity,\n\t\t\t\t})\n\t\t\t})\n\t}\n\n\tpublic async delete(id: LocalModuleId): Promise<void> {\n\t\tthis.incrementSyncOps()\n\n\t\tawait engine.stores.modulesStore\n\t\t\t.forType(ModuleType.Code)\n\t\t\t.getByLocalId(id)\n\t\t\t.delete()\n\t\t\t.finally(() => {\n\t\t\t\tthis.decrementSyncOps()\n\t\t\t})\n\t\t\t.catch(err => {\n\t\t\t\tlog.reportError(err, { operation: \"delete\", id })\n\t\t\t\ttoast({\n\t\t\t\t\ttype: \"add\",\n\t\t\t\t\tvariant: \"error\",\n\t\t\t\t\tprimaryText: \"Failed to delete\",\n\t\t\t\t\tsecondaryText: \"code file.\",\n\t\t\t\t\tkey: errorKey,\n\t\t\t\t\ticon: \"error\",\n\t\t\t\t\tshowCloseButton: \"always\",\n\t\t\t\t})\n\t\t\t})\n\t}\n\n\t// getting\n\n\tpublic getByName(path: string): EditableFile | undefined {\n\t\treturn this.files.find(file => file.path === path)\n\t}\n\n\tpublic getById(id: LocalModuleId): EditableFile | undefined {\n\t\treturn this.files.find(file => file.id === id)\n\t}\n\n\tpublic hasModule(name: string): boolean {\n\t\tconst ommitableExtensions = [\"js\", \"jsx\", \"ts\", \"tsx\"]\n\t\tif (name.startsWith(\"./\")) {\n\t\t\tname = name.slice(\"./\".length)\n\n\t\t\tconst fileExists = !!this.files.find(file => {\n\t\t\t\t// Check if the extension is .ts or .tsx since these are the only\n\t\t\t\t// types of files that should be imported without specifying the extension.\n\t\t\t\tconst extension = file.path.split(\".\").pop()\n\n\t\t\t\tif (extension && !ommitableExtensions.includes(extension)) return false\n\n\t\t\t\t// For component files, include the dot of the extention to guarantee there aren't any partial name matches\n\t\t\t\tconst newName = name + \".\"\n\t\t\t\t// must not have any dots after the one we added\n\t\t\t\treturn file.path.startsWith(newName) && !file.path.includes(\".\", newName.length)\n\t\t\t})\n\t\t\tif (fileExists) return true\n\n\t\t\t// If the file name includes a different extension (e.g. \"test.json\"), make sure the complete paths match\n\t\t\tif (name.includes(\".\") && name.split(\".\").length === 2) {\n\t\t\t\treturn !!this.files.find(file => file.path === name)\n\t\t\t}\n\t\t}\n\n\t\t// check if we have this as a direct depedency, in which case the types have not been installed\n\t\treturn this.packageJsonDependencies.includes(name)\n\t}\n\n\tpublic list(): EditableFile[] {\n\t\tconst sortOptions: Intl.CollatorOptions = { numeric: true, sensitivity: \"base\" }\n\t\treturn this.files.sort(({ codeFile: a }, { codeFile: b }) => {\n\t\t\tif (a.folderSortName !== b.folderSortName) {\n\t\t\t\tif (!a.folderSortName) return 1\n\t\t\t\tif (!b.folderSortName) return -1\n\t\t\t\treturn a.folderSortName.localeCompare(b.folderSortName, undefined, sortOptions)\n\t\t\t}\n\t\t\tif (a.sortName !== b.sortName) return a.sortName.localeCompare(b.sortName, undefined, sortOptions)\n\t\t\treturn a.path.localeCompare(b.path, undefined, sortOptions)\n\t\t})\n\t}\n\n\tpublic async addNpmDependencies(\n\t\tinstallDescriptor: InstallDescriptor | InstallDescriptor[],\n\t): Promise<{ dependenciesMap: DependenciesMap }> {\n\t\treturn engine.stores.modulesStore.addNpmDependencies(installDescriptor)\n\t}\n\n\tpublic getNpmDependencyInstallStatus(descriptor: InstallDescriptor) {\n\t\treturn engine.stores.modulesStore.getNpmDependencyInstallStatus(descriptor)\n\t}\n\n\tpublic somethingUpdated() {\n\t\tthis.notifyOnChangeHandlers()\n\t}\n\n\t// change support\n\n\tpublic addOnChangeHandler(handler: ChangeHandler): void {\n\t\tthis.changeHandlers.push(handler)\n\t}\n\n\tpublic removeOnChangeHandler(handler: ChangeHandler): void {\n\t\tconst at = this.changeHandlers.indexOf(handler)\n\t\tif (at === -1) return\n\t\tthis.changeHandlers.splice(at, 1)\n\t}\n\n\tprivate notifyOnChangeHandlers(): void {\n\t\tthis.update += 1\n\t\tthis.changeHandlers.forEach(handler => handler())\n\t}\n\n\tpublic addSyncingStatusChangeHandler(onStatusChange: SyncingStatusHandler) {\n\t\tthis.syncingStatusChangeHandlers.add(onStatusChange)\n\t}\n\n\tpublic removeSyncingStatusChangeHandler(onStatusChange: SyncingStatusHandler) {\n\t\tthis.syncingStatusChangeHandlers.delete(onStatusChange)\n\t}\n\n\tprivate notifySyncingStatusListeners(syncing: boolean) {\n\t\tthis.syncingStatusChangeHandlers.forEach(onStatusChange => onStatusChange(syncing))\n\t}\n\n\tprivate incrementSyncOps = () => {\n\t\tthis.syncOpsInProgress++\n\t\tif (this.syncOpsInProgress === 1) {\n\t\t\tthis.notifySyncingStatusListeners(true)\n\t\t}\n\t}\n\n\tprivate decrementSyncOps = () => {\n\t\tthis.syncOpsInProgress--\n\t\tif (this.syncOpsInProgress === 0) {\n\t\t\tthis.notifySyncingStatusListeners(false)\n\t\t}\n\n\t\tassert(this.syncOpsInProgress >= 0, \"syncOpsInProgress has an invalid state:\", this.syncOpsInProgress)\n\t}\n\n\t// internal\n\n\trecreateFoldersStructure() {\n\t\tthis.root.reset()\n\t\tthis.files.forEach(({ codeFile: file }) => {\n\t\t\tthis.root.createFolders(file.folders).addFile(file)\n\t\t})\n\t}\n\n\tprivate async updateDependenciesSource(\n\t\tfileId: typeof IMPORT_MAP_FILE_ID | typeof DEPENDENCIES_FILE_ID,\n\t\tsource: string,\n\t) {\n\t\tawait engine.stores.modulesStore.updateDependenciesSource(fileId, source)\n\t}\n}\n\nfunction isVisibleFile(path: string): boolean {\n\tif (isDependenciesFileId(path)) return true\n\n\tconst [moduleType] = splitTypeSlashName(path)\n\tswitch (moduleType) {\n\t\tcase ModuleType.Code:\n\t\tcase ModuleType.Shader:\n\t\t\treturn true\n\t\tdefault:\n\t\t\treturn false\n\t}\n}\n\nfunction configureAutomaticTypeAcquisition(modelFactory: MonacoModelFactory) {\n\tconst ataPromise = setupAutomaticTypeAcquisition({\n\t\t// Note: automatic type acquisition's finished callback returns an\n\t\t// accumulative map of all resolved types\n\t\tfinished: (vfs: Map<string, string>) => {\n\t\t\tvfs?.forEach((code, path) => {\n\t\t\t\tmodelFactory.addLibrary(path, code)\n\t\t\t})\n\t\t},\n\t\tlog: (msg: string) => log.debug(msg),\n\t}).then(async acquireTypes => {\n\t\t// After ATA is set up, immediately acquire types for core packages\n\t\t// that are extremely likely to be used by any opened project\n\t\tawait acquireTypes(`\n\t\t\timport \"react\"\n\t\t\timport \"react-dom\"\n\t\t\timport \"framer-motion\"\n\t\t\timport \"csstype\"\n\t\t\timport \"framer\"\n\t\t`)\n\t\treturn acquireTypes\n\t})\n\n\treturn async (code: string) => {\n\t\tconst acquireTypes = await ataPromise\n\t\tawait acquireTypes(code)\n\t}\n}\n", "import { debounce } from \"@framerjs/shared\"\nimport type { TypeSlashName } from \"modules/types.ts\"\nimport * as monaco from \"monaco-editor\"\nimport { log } from \"./logger.ts\"\nimport { ensureCodeFileExtension } from \"./utils.ts\"\n\nconst cursorStateComputer: monaco.editor.ICursorStateComputer = () => null\n\nclass Library {\n\tconstructor(\n\t\treadonly content: string,\n\t\tprivate d1: monaco.IDisposable,\n\t\tprivate d2: monaco.IDisposable,\n\t) {}\n\tdispose() {\n\t\tthis.d1.dispose()\n\t\tthis.d2.dispose()\n\t}\n}\n\nexport class MonacoModelFactory {\n\tlibraries = new Map<string, Library>()\n\tpendingLibraryCount: number = 0\n\tpendingLibraries: { name: string; content: string; typesPackage?: boolean }[] = []\n\n\tcreate(path: TypeSlashName, content: string): monaco.editor.ITextModel {\n\t\t// We need to add a valid code file extension if not present,\n\t\t// otherwise Monaco won't recognize the model as a code file.\n\t\tconst modelName = ensureCodeFileExtension(path)\n\t\treturn monaco.editor.createModel(content, undefined, monaco.Uri.file(modelName))\n\t}\n\n\tupsert(path: TypeSlashName, content: string): monaco.editor.ITextModel {\n\t\tconst existingModel = this.getModel(path)\n\t\tif (existingModel) {\n\t\t\tthis.setValue(existingModel, content)\n\t\t\treturn existingModel\n\t\t} else {\n\t\t\treturn this.create(path, content)\n\t\t}\n\t}\n\n\t/**\n\t * Inserts text to the specified position preserving the cursor position.\n\t */\n\tinsertText(model: monaco.editor.ITextModel, text: string, range: monaco.IRange) {\n\t\tmodel.pushEditOperations([], [{ range, text }], () => null)\n\t}\n\n\tsetValue(model: monaco.editor.ITextModel, content: string) {\n\t\t// this preserves the cursor position\n\t\tmodel.pushEditOperations(\n\t\t\t[],\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\trange: model.getFullModelRange(),\n\t\t\t\t\ttext: content,\n\t\t\t\t},\n\t\t\t],\n\t\t\tcursorStateComputer,\n\t\t)\n\t}\n\n\tincrementPendingLibraries(source: string, value: number = 1) {\n\t\tlog.debug(`PendingLib ${this.pendingLibraryCount} + ${value} = ${this.pendingLibraryCount + value}, ${source}`)\n\t\tthis.pendingLibraryCount += value\n\t}\n\n\tdebounceProcessQueue = debounce(() => {\n\t\tif (this.pendingLibraryCount === 0) {\n\t\t\tthis.pendingLibraries.forEach(({ name, content, typesPackage }) => this.addLibrary(name, content, typesPackage))\n\t\t}\n\t}, 500)\n\n\tdecrementPendingLibraries(source: string, value: number = 1) {\n\t\tlog.debug(`PendingLib ${this.pendingLibraryCount} - ${value} = ${this.pendingLibraryCount - value}, ${source}`)\n\t\tthis.pendingLibraryCount -= value\n\t\tthis.debounceProcessQueue()\n\t}\n\n\t/** This adds or updates a library */\n\taddLibrary(name: string, content: string, typesPackage?: boolean): void {\n\t\tif (this.pendingLibraryCount !== 0) {\n\t\t\tthis.pendingLibraries.push({ name, content, typesPackage })\n\t\t\treturn\n\t\t}\n\n\t\tconst existing = this.libraries.get(name)\n\t\tif (existing && existing.content === content) return\n\n\t\tlet uri: string\n\t\tif (name.startsWith(\"https:\")) {\n\t\t\turi = ensureCodeFileExtension(name)\n\t\t} else if (name === \"canvas.tsx\") {\n\t\t\turi = `file:///${name}`\n\t\t} else if (name.startsWith(\"/node_modules/\")) {\n\t\t\t// Packages from @typescript/ata\n\t\t\turi = `file://${name}`\n\t\t} else if (!name.endsWith(\".d.ts\")) {\n\t\t\turi = `file:///node_modules/@types/${name}/index.d.ts`\n\t\t} else if (typesPackage) {\n\t\t\turi = `file:///node_modules/@types/${name}`\n\t\t} else {\n\t\t\turi = `file:///node_modules/${name}`\n\t\t}\n\n\t\tlog.debug(\"addLibrary:\", uri)\n\t\ttry {\n\t\t\tif (existing) {\n\t\t\t\tlog.info(\"dispose existing: \", uri)\n\t\t\t\texisting.dispose()\n\t\t\t}\n\t\t\tconst d1 = monaco.languages.typescript.typescriptDefaults.addExtraLib(content, uri)\n\t\t\tconst d2 = monaco.languages.typescript.javascriptDefaults.addExtraLib(content, uri)\n\t\t\tthis.libraries.set(name, new Library(content, d1, d2))\n\t\t} catch (e) {\n\t\t\tlog.warn(\"error loading library\", name, e)\n\t\t}\n\t}\n\n\thasLibrary(name: string): boolean {\n\t\treturn this.libraries.has(name)\n\t}\n\n\tgetModel(path: TypeSlashName): monaco.editor.ITextModel | null {\n\t\t// We create all our models ensuring a valid code file extension is present,\n\t\t// so we need to do the same when querying them.\n\t\tconst modelName = ensureCodeFileExtension(path)\n\n\t\treturn monaco.editor.getModel(monaco.Uri.file(modelName))\n\t}\n}\n", "import { delay } from \"@framerjs/shared\"\nimport * as monaco from \"monaco-editor\"\nimport { wireTmGrammars } from \"monaco-editor-textmate\"\nimport { Registry } from \"monaco-textmate\"\nimport { loadWASM } from \"onigasm\"\nimport { editorPath } from \"utils/platformPaths.ts\"\nimport { log } from \"../logger.ts\"\nimport TypeScriptReactLanguage from \"./TypeScriptReact.tmLanguage.json\" with { type: \"json\" }\n\nlet installed = false\n\n/**\n * Setups the typescript textmate grammar.\n */\nexport async function installTextmateGrammars() {\n\tif (installed) return\n\tinstalled = true\n\n\t// By default, Monaco\u2019s TS and JS definitions are code-split and loaded asynchronously \u2013\n\t// but this creates a race condition between them and our custom grammars,\n\t// where the last loaded grammar wins.\n\t// See https://github.com/Microsoft/monaco-editor/issues/884 for more details.\n\t//\n\t// To work around things, we have to register our custom grammars\n\t// after Monaco\u2019s grammars have been set up. There\u2019s no simple and reliable way to do that,\n\t// so we a) preload built-in grammars ahead of time (and wait until they are loaded),\n\t// b) also, wait until the first editor is created.\n\t//\n\t// If you\u2019re changing this, please test code highlighting in the following scenarios:\n\t//   1) Opening an existing code file\n\t//   2) Creating a new file when there\u2019re 0 existing code files\n\t// It\u2019s important to test both scenarios because with 1, monaco sets up languages right after it loads;\n\t// and with 2, it waits until the first file is created.\n\t// It\u2019s also required to test each scenario after a page reload,\n\t// as installTextmateGrammars() is ran only once when the code editor is set up.\n\tconst monacoGrammarsSetup = Promise.all([\n\t\t// @ts-ignore missing declaration file\n\t\timport(\"monaco-editor/esm/vs/basic-languages/typescript/typescript.js\"),\n\t\t// @ts-ignore missing declaration file\n\t\timport(\"monaco-editor/esm/vs/basic-languages/javascript/javascript.js\"),\n\t\t// @ts-ignore missing declaration file\n\t\timport(\"monaco-editor/esm/vs/basic-languages/html/html.js\"),\n\t\t// @ts-ignore missing declaration file\n\t\timport(\"monaco-editor/esm/vs/language/typescript/tsMode.js\"),\n\t\tnew Promise<void>(resolve => {\n\t\t\tmonaco.editor.onDidCreateEditor(() => resolve())\n\t\t}),\n\t])\n\n\t// The code below follows the usage example from https://www.npmjs.com/package/monaco-editor-textmate\n\tawait loadWASM(editorPath(\"./onigasm.wasm\"))\n\n\tconst registry = new Registry({\n\t\tasync getGrammarDefinition() {\n\t\t\treturn { format: \"json\", content: TypeScriptReactLanguage }\n\t\t},\n\t})\n\n\tawait monacoGrammarsSetup\n\t// Wait a few more ticks to reduce the likelihood of a race condition\n\tawait delay(100)\n\n\tconst grammars = new Map([\n\t\t[\"javascript\", \"source.tsx\"],\n\t\t[\"typescript\", \"source.tsx\"],\n\t])\n\tawait wireTmGrammars(monaco, registry, grammars)\n\tlog.info(\"installed typescript textmate grammar\")\n}\n", "{\n\t\"name\": \"TypeScriptReact\",\n\t\"scopeName\": \"source.tsx\",\n\t\"fileTypes\": [\"tsx\"],\n\t\"uuid\": \"805375ec-d614-41f5-8993-5843fe63ea82\",\n\t\"patterns\": [\n\t\t{\n\t\t\t\"include\": \"#directives\"\n\t\t},\n\t\t{\n\t\t\t\"include\": \"#statements\"\n\t\t},\n\t\t{\n\t\t\t\"include\": \"#shebang\"\n\t\t}\n\t],\n\t\"repository\": {\n\t\t\"shebang\": {\n\t\t\t\"name\": \"comment.line.shebang.tsx\",\n\t\t\t\"match\": \"\\\\A(#!).*(?=$)\",\n\t\t\t\"captures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.comment.tsx\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"statements\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#control-statement\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#after-operator-block-as-object-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#decl-block\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#label\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-semicolon\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"declaration\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#decorator\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#var-expr\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#class-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#interface-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#enum-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#namespace-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-alias-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#import-equals-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#import-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#export-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"control-statement\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#switch-statement\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#for-loop\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.trycatch.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|goto)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.loop.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.label.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.loop.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(return)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.flow.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=[;}]|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.switch.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#if-statement\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.conditional.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.with.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(with)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(package)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.other.debugger.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"label\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)(?=\\\\s*\\\\{)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.label.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.separator.label.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#decl-block\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(:)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.label.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.separator.label.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"expression\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expressionWithoutIdentifiers\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#identifiers\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expressionPunctuations\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"expressionWithoutIdentifiers\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#regex\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-expression\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#class-expression\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#arrow-function\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#paren-expression-possibly-arrow\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#cast\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#ternary-expression\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#new-expr\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#instanceof-expr\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression-operators\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-call\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#support-objects\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#paren-expression\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"expressionPunctuations\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-accessor\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"decorator\": {\n\t\t\t\"name\": \"meta.decorator.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))\\\\@\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.decorator.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?=\\\\s)\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"var-expr\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.var.expr.tsx\",\n\t\t\t\t\t\"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n\t\t\t\t\t\"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))|((?<!^let|[^\\\\._$[:alnum:]]let|^var|[^\\\\._$[:alnum:]]var)(?=\\\\s*$)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(var|let)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"storage.type.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?=\\\\S)\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#destructuring-variable\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#var-single-variable\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(,)\\\\s*(?=$|\\\\/\\\\/)\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.separator.comma.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#single-line-comment-consuming-line-ending\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#destructuring-variable\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#var-single-variable\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.var.expr.tsx\",\n\t\t\t\t\t\"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))|((?<!^const|[^\\\\._$[:alnum:]]const)(?=\\\\s*$)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(const(?!\\\\s+enum\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"storage.type.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?=\\\\S)\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#destructuring-const\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#var-single-const\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(,)\\\\s*(?=$|\\\\/\\\\/)\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.separator.comma.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#single-line-comment-consuming-line-ending\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#destructuring-const\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#var-single-const\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.var.expr.tsx\",\n\t\t\t\t\t\"begin\": \"(?=(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b((?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?!(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b((?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))((?=;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))|((?<!^using|[^\\\\._$[:alnum:]]using|^await\\\\s+using|[^\\\\._$[:alnum:]]await\\\\s+using)(?=\\\\s*$)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b((?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"storage.type.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?=\\\\S)\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#var-single-const\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(,)\\\\s*((?!\\\\S)|(?=\\\\/\\\\/))\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.separator.comma.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|^\\\\s*$))|((?<=\\\\S)(?=\\\\s*$)))\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#single-line-comment-consuming-line-ending\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#var-single-const\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"var-single-variable\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.var-single-variable.expr.tsx\",\n\t\t\t\t\t\"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.definition.variable.tsx entity.name.function.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.definiteassignment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#var-single-variable-type-annotation\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.var-single-variable.expr.tsx\",\n\t\t\t\t\t\"begin\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\\\!)?\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.definition.variable.tsx variable.other.constant.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.definiteassignment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#var-single-variable-type-annotation\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.var-single-variable.expr.tsx\",\n\t\t\t\t\t\"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)(\\\\!)?\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.definition.variable.tsx variable.other.readwrite.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.definiteassignment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#var-single-variable-type-annotation\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"var-single-const\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.var-single-variable.expr.tsx\",\n\t\t\t\t\t\"begin\": \"(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#var-single-variable-type-annotation\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.var-single-variable.expr.tsx\",\n\t\t\t\t\t\"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.definition.variable.tsx variable.other.constant.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+)|(;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#var-single-variable-type-annotation\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"var-single-variable-type-annotation\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"destructuring-variable\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object-binding-pattern-variable.tsx\",\n\t\t\t\t\t\"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n\t\t\t\t\t\"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#object-binding-pattern\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.array-binding-pattern-variable.tsx\",\n\t\t\t\t\t\"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n\t\t\t\t\t\"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#array-binding-pattern\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"destructuring-const\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object-binding-pattern-variable.tsx\",\n\t\t\t\t\t\"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\{)\",\n\t\t\t\t\t\"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#object-binding-pattern-const\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.array-binding-pattern-variable.tsx\",\n\t\t\t\t\t\"begin\": \"(?<!=|:|^of|[^\\\\._$[:alnum:]]of|^in|[^\\\\._$[:alnum:]]in)\\\\s*(?=\\\\[)\",\n\t\t\t\t\t\"end\": \"(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#array-binding-pattern-const\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"object-binding-element\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n\t\t\t\t\t\"end\": \"(?=,|\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#object-binding-element-propertyName\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#binding-element\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-binding-pattern\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#destructuring-variable-rest\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"object-binding-element-const\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n\t\t\t\t\t\"end\": \"(?=,|\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#object-binding-element-propertyName\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#binding-element-const\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-binding-pattern-const\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#destructuring-variable-rest-const\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"object-binding-element-propertyName\": {\n\t\t\t\"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n\t\t\t\"end\": \"(:)\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.destructuring.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#array-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#numeric-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"variable.object.property.tsx\",\n\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"binding-element\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#numeric-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#regex\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-binding-pattern\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#array-binding-pattern\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#destructuring-variable-rest\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"binding-element-const\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#numeric-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#regex\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-binding-pattern-const\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#array-binding-pattern-const\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#destructuring-variable-rest-const\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"destructuring-variable-rest\": {\n\t\t\t\"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\"captures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"meta.definition.variable.tsx variable.other.readwrite.tsx\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"destructuring-variable-rest-const\": {\n\t\t\t\"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\"captures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"meta.definition.variable.tsx variable.other.constant.tsx\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"object-binding-pattern\": {\n\t\t\t\"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-binding-element\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"object-binding-pattern-const\": {\n\t\t\t\"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-binding-element-const\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"array-binding-pattern\": {\n\t\t\t\"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\]\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#binding-element\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"array-binding-pattern-const\": {\n\t\t\t\"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\]\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#binding-element-const\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"parameter-name\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tsx variable.language.this.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"destructuring-parameter\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.parameter.object-binding-pattern.tsx\",\n\t\t\t\t\t\"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\}\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#parameter-object-binding-element\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.paramter.array-binding-pattern.tsx\",\n\t\t\t\t\t\"begin\": \"(?<!=|:)\\\\s*(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\]\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#parameter-binding-element\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"parameter-object-binding-element\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(:))\",\n\t\t\t\t\t\"end\": \"(?=,|\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#object-binding-element-propertyName\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#parameter-binding-element\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#paren-expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#parameter-object-binding-pattern\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#destructuring-parameter-rest\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"parameter-binding-element\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#numeric-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#regex\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#parameter-object-binding-pattern\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#parameter-array-binding-pattern\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#destructuring-parameter-rest\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"destructuring-parameter-rest\": {\n\t\t\t\"match\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\"captures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"variable.parameter.tsx\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"parameter-object-binding-pattern\": {\n\t\t\t\"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\{)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.object.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#parameter-object-binding-element\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"parameter-array-binding-pattern\": {\n\t\t\t\"begin\": \"(?:(\\\\.\\\\.\\\\.)\\\\s*)?(\\\\[)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\]\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.binding-pattern.array.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#parameter-binding-element\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"field-declaration\": {\n\t\t\t\"name\": \"meta.field.declaration.tsx\",\n\t\t\t\"begin\": \"(?x)(?<!\\\\()(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s+)?(?=\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|\\\\}|$))\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?x)(?=\\\\}|;|,|$|(^(?!\\\\s*((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(?:(?:(\\\\?)|(\\\\!))\\\\s*)?(=|:|;|,|$))))|(?<=\\\\})\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#array-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#numeric-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\\\?)|(\\\\!))?(?=\\\\s*\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.definition.property.tsx entity.name.function.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.definiteassignment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.definition.property.tsx variable.object.property.tsx\",\n\t\t\t\t\t\"match\": \"\\\\#?[_$[:alpha:]][_$[:alnum:]]*\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\",\n\t\t\t\t\t\"match\": \"\\\\?\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.definiteassignment.tsx\",\n\t\t\t\t\t\"match\": \"\\\\!\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"variable-initializer\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<!=|!)(=)(?!=)(?=\\\\s*\\\\S)(?!\\\\s*.*=>\\\\s*$)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=$|^|[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<!=|!)(=)(?!=)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=[,);}\\\\]]|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(of|in)\\\\s+))|(?=^\\\\s*$)|(?<![\\\\|\\\\&\\\\+\\\\-\\\\*\\\\/])(?<=\\\\S)(?<!=)(?=\\\\s*$)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"function-declaration\": {\n\t\t\t\"name\": \"meta.function.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"storage.type.function.tsx\"\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"name\": \"keyword.generator.asterisk.tsx\"\n\t\t\t\t},\n\t\t\t\t\"6\": {\n\t\t\t\t\t\"name\": \"meta.definition.function.tsx entity.name.function.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))|(?<=\\\\})\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-name\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-body\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"function-expression\": {\n\t\t\t\"name\": \"meta.function.expression.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(async)\\\\s+)?(function\\\\b)(?:\\\\s*(\\\\*))?(?:(?:\\\\s+|(?<=\\\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\\\s*\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.type.function.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"keyword.generator.asterisk.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"meta.definition.function.tsx entity.name.function.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?=;)|(?<=\\\\})\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-name\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#single-line-comment-consuming-line-ending\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-body\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"function-name\": {\n\t\t\t\"name\": \"meta.definition.function.tsx entity.name.function.tsx\",\n\t\t\t\"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n\t\t},\n\t\t\"function-body\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#return-type\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-function-return-type\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#decl-block\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.generator.asterisk.tsx\",\n\t\t\t\t\t\"match\": \"\\\\*\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"method-declaration\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.method.declaration.tsx\",\n\t\t\t\t\t\"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?\\\\s*\\\\b(constructor)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#method-declaration-name\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#function-body\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.method.declaration.tsx\",\n\t\t\t\t\t\"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:(?:\\\\s*\\\\b(new)\\\\b(?!:)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|(?:(\\\\*)\\\\s*)?)(?=\\\\s*((<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.new.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"6\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.generator.asterisk.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#method-declaration-name\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#function-body\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.method.declaration.tsx\",\n\t\t\t\t\t\"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(override)\\\\s+)?(?:\\\\b(public|private|protected)\\\\s+)?(?:\\\\b(abstract)\\\\s+)?(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.property.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"6\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.generator.asterisk.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#method-declaration-name\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#function-body\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"object-literal-method-declaration\": {\n\t\t\t\"name\": \"meta.method.declaration.tsx\",\n\t\t\t\"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.type.property.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"keyword.generator.asterisk.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#method-declaration-name\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-body\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(async)\\\\s+)?(?:\\\\b(get|set)\\\\s+)?(?:(\\\\*)\\\\s*)?(?=\\\\s*(((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??))\\\\s*((<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?[\\\\(])\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.property.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.generator.asterisk.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\(|\\\\<)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#method-declaration-name\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"method-declaration-name\": {\n\t\t\t\"begin\": \"(?x)(?=((\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\]))\\\\s*(\\\\??)\\\\s*[\\\\(\\\\<])\",\n\t\t\t\"end\": \"(?=\\\\(|\\\\<)\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#array-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#numeric-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.definition.method.tsx entity.name.function.tsx\",\n\t\t\t\t\t\"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\",\n\t\t\t\t\t\"match\": \"\\\\?\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"arrow-function\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.arrow.tsx\",\n\t\t\t\t\t\"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?==>)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.arrow.tsx\",\n\t\t\t\t\t\"begin\": \"(?x) (?:\\n  (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(\\\\basync)\\n)? ((?<![})!\\\\]])\\\\s*\\n  (?=\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  )\\n)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#function-parameters\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#arrow-return-type\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#possibly-arrow-return-type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.arrow.tsx\",\n\t\t\t\t\t\"begin\": \"=>\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.function.arrow.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"((?<=\\\\}|\\\\S)(?<!=>)|((?!\\\\{)(?=\\\\S)))(?!\\\\/[\\\\/\\\\*])\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#single-line-comment-consuming-line-ending\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#decl-block\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"indexer-declaration\": {\n\t\t\t\"name\": \"meta.indexer.declaration.tsx\",\n\t\t\t\"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=:)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"meta.brace.square.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"variable.parameter.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(\\\\])\\\\s*(\\\\?\\\\s*)?|$\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"meta.brace.square.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"indexer-mapped-type-declaration\": {\n\t\t\t\"name\": \"meta.indexer.mappedtype.declaration.tsx\",\n\t\t\t\"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([+-])?(readonly)\\\\s*)?\\\\s*(\\\\[)\\\\s*([_$[:alpha:]][_$[:alnum:]]*)\\\\s+(in)\\\\s+\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.type.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"meta.brace.square.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"entity.name.type.tsx\"\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"name\": \"keyword.operator.expression.in.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(\\\\])([+-])?\\\\s*(\\\\?\\\\s*)?|$\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"meta.brace.square.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"keyword.operator.type.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.as.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"function-parameters\": {\n\t\t\t\"name\": \"meta.parameters.tsx\",\n\t\t\t\"begin\": \"\\\\(\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.parameters.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\)\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.parameters.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#function-parameters-body\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"function-parameters-body\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#decorator\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#destructuring-parameter\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#parameter-name\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#parameter-type-annotation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"punctuation.separator.parameter.tsx\",\n\t\t\t\t\t\"match\": \",\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"class-declaration\": {\n\t\t\t\"name\": \"meta.class.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(class)\\\\b(?=\\\\s+|/[/*])\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"storage.type.class.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?<=\\\\})\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#class-declaration-or-expression-patterns\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"class-expression\": {\n\t\t\t\"name\": \"meta.class.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(class)\\\\b(?=\\\\s+|[<{]|\\\\/[\\\\/*])\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.type.class.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?<=\\\\})\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#class-declaration-or-expression-patterns\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"class-declaration-or-expression-patterns\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#class-or-interface-heritage\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.class.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#class-or-interface-body\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"interface-declaration\": {\n\t\t\t\"name\": \"meta.interface.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(?:(abstract)\\\\s+)?\\\\b(interface)\\\\b(?=\\\\s+|/[/*])\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"storage.type.interface.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?<=\\\\})\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#class-or-interface-heritage\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"[_$[:alpha:]][_$[:alnum:]]*\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.interface.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#class-or-interface-body\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"class-or-interface-heritage\": {\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:\\\\b(extends|implements)\\\\b)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?=\\\\{)\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#class-or-interface-heritage\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expressionWithoutIdentifiers\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s*\\\\??\\\\.\\\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\\\s*)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.module.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.other.inherited-class.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expressionPunctuations\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"class-or-interface-body\": {\n\t\t\t\"begin\": \"\\\\{\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#decorator\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<=:)\\\\s*\",\n\t\t\t\t\t\"end\": \"(?=\\\\s|[;),}\\\\]:\\\\-\\\\+]|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#method-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#indexer-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#field-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#access-modifier\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#property-accessor\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#async-modifier\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#after-operator-block-as-object-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#decl-block\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-semicolon\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"access-modifier\": {\n\t\t\t\"name\": \"storage.modifier.tsx\",\n\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t},\n\t\t\"property-accessor\": {\n\t\t\t\"name\": \"storage.type.property.tsx\",\n\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t},\n\t\t\"async-modifier\": {\n\t\t\t\"name\": \"storage.modifier.async.tsx\",\n\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(async)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t},\n\t\t\"enum-declaration\": {\n\t\t\t\"name\": \"meta.enum.declaration.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?(?:\\\\b(const)\\\\s+)?\\\\b(enum)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"storage.type.enum.tsx\"\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"name\": \"entity.name.type.enum.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?<=\\\\})\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"\\\\{\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\}\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"variable.other.enummember.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?=,|\\\\}|$)\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?=((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])+\\\\])))\",\n\t\t\t\t\t\t\t\"end\": \"(?=,|\\\\}|$)\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#array-literal\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"namespace-declaration\": {\n\t\t\t\"name\": \"meta.namespace.declaration.tsx\",\n\t\t\t\"begin\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(namespace|module)\\\\s+(?=[_$[:alpha:]\\\"'`]))\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"storage.type.namespace.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?<=\\\\})|(?=;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entity.name.type.module.tsx\",\n\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-accessor\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#decl-block\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-alias-declaration\": {\n\t\t\t\"name\": \"meta.type.declaration.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(type)\\\\b\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"storage.type.type.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"entity.name.type.alias.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(=)\\\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.intrinsic.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(=)\\\\s*\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\}|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"import-equals-declaration\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.import-equals.external.tsx\",\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(require)\\\\s*(\\\\()\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.import.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.type.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.readwrite.alias.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"6\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"7\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.require.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"8\": {\n\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.import-equals.internal.tsx\",\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type))?\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(=)\\\\s*(?!require\\\\b)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.import.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.type.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.readwrite.alias.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"6\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=;|$|^)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#single-line-comment-consuming-line-ending\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n\t\t\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"entity.name.type.module.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"variable.other.readwrite.tsx\",\n\t\t\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"import-declaration\": {\n\t\t\t\"name\": \"meta.import.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(\\\\bexport)\\\\s+)?(?:(\\\\bdeclare)\\\\s+)?\\\\b(import)(?:\\\\s+(type)(?!\\\\s+from))?(?!\\\\s*[:\\\\(])(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"keyword.control.import.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"keyword.control.type.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?<!^import|[^\\\\._$[:alnum:]]import)(?=;|$|^)\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#single-line-comment-consuming-line-ending\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<=^import|[^\\\\._$[:alnum:]]import)(?!\\\\s*[\\\"'])\",\n\t\t\t\t\t\"end\": \"\\\\bfrom\\\\b\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.from.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#import-export-declaration\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#import-export-declaration\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"export-declaration\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)\\\\s+(as)\\\\s+(namespace)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.as.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.namespace.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.module.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.export.default.tsx\",\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?(?:(?:\\\\s*(=))|(?:\\\\s+(default)(?=\\\\s+)))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.type.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.default.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#interface-declaration\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.export.tsx\",\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(export)(?:\\\\s+(type))?\\\\b(?!(\\\\$)|(\\\\s*:))((?=\\\\s*[\\\\{*])|((?=\\\\s*[_$[:alpha:]][_$[:alnum:]]*(\\\\s|,))(?!\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b)))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.export.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.type.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#import-export-declaration\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"import-export-declaration\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#import-export-block\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.from.tsx\",\n\t\t\t\t\t\"match\": \"\\\\bfrom\\\\b\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#import-export-assert-clause\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#import-export-clause\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"import-export-assert-clause\": {\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(with)|(assert))\\\\s*(\\\\{)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.control.with.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"keyword.control.assert.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object-literal.key.tsx\",\n\t\t\t\t\t\"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"punctuation.separator.key-value.tsx\",\n\t\t\t\t\t\"match\": \":\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"import-export-block\": {\n\t\t\t\"name\": \"meta.block.tsx\",\n\t\t\t\"begin\": \"\\\\{\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#import-export-clause\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"import-export-clause\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(?:(\\\\btype)\\\\s+)?(?:(\\\\bdefault)|(\\\\*)|(\\\\b[_$[:alpha:]][_$[:alnum:]]*)|((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))))\\\\s+(as)\\\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|([_$[:alpha:]][_$[:alnum:]]*)|((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.type.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.default.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"constant.language.import-export-all.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.readwrite.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"string.quoted.alias.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"12\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.as.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"13\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.default.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"14\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.readwrite.alias.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"15\": {\n\t\t\t\t\t\t\t\"name\": \"string.quoted.alias.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.language.import-export-all.tsx\",\n\t\t\t\t\t\"match\": \"\\\\*\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.default.tsx\",\n\t\t\t\t\t\"match\": \"\\\\b(default)\\\\b\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?:(\\\\btype)\\\\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.type.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.readwrite.alias.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"string.quoted.alias.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"switch-statement\": {\n\t\t\t\"name\": \"switch-statement.expr.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bswitch\\\\s*\\\\()\",\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"switch-expression.expr.tsx\",\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(switch)\\\\s*(\\\\()\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.switch.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"switch-block.expr.tsx\",\n\t\t\t\t\t\"begin\": \"\\\\{\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"case-clause.expr.tsx\",\n\t\t\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"keyword.control.switch.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?=:)\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(:)\\\\s*(\\\\{)\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"meta.block.tsx punctuation.definition.block.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"\\\\}\",\n\t\t\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"meta.block.tsx punctuation.definition.block.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"contentName\": \"meta.block.tsx\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#statements\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"match\": \"(:)\",\n\t\t\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"case-clause.expr.tsx punctuation.definition.section.case-statement.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#statements\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"for-loop\": {\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))for(?=((\\\\s+|(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*))await)?\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)?(\\\\())\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"keyword.control.loop.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?<=\\\\))\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.loop.tsx\",\n\t\t\t\t\t\"match\": \"await\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"\\\\(\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#var-expr\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#punctuation-semicolon\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"if-statement\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?=\\\\bif\\\\s*(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))\\\\s*(?!\\\\{))\",\n\t\t\t\t\t\"end\": \"(?=;|$|\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(if)\\\\s*(\\\\()\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"keyword.control.conditional.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"\\\\)\",\n\t\t\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"string.regexp.tsx\",\n\t\t\t\t\t\t\t\"begin\": \"(?<=\\\\))\\\\s*\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuvy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.definition.string.begin.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(/)([dgimsuvy]*)\",\n\t\t\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.definition.string.end.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"keyword.other.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#regexp\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#statements\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"decl-block\": {\n\t\t\t\"name\": \"meta.block.tsx\",\n\t\t\t\"begin\": \"\\\\{\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#statements\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"after-operator-block-as-object-literal\": {\n\t\t\t\"name\": \"meta.objectliteral.tsx\",\n\t\t\t\"begin\": \"(?<!\\\\+\\\\+|--)(?<=[:=(,\\\\[?+!>]|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^yield|[^\\\\._$[:alnum:]]yield|^throw|[^\\\\._$[:alnum:]]throw|^in|[^\\\\._$[:alnum:]]in|^of|[^\\\\._$[:alnum:]]of|^typeof|[^\\\\._$[:alnum:]]typeof|&&|\\\\|\\\\||\\\\*)\\\\s*(\\\\{)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-member\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"object-literal\": {\n\t\t\t\"name\": \"meta.objectliteral.tsx\",\n\t\t\t\"begin\": \"\\\\{\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-member\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"object-member\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-literal-method-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx meta.object-literal.key.tsx\",\n\t\t\t\t\t\"begin\": \"(?=\\\\[)\",\n\t\t\t\t\t\"end\": \"(?=:)|((?<=[\\\\]])(?=\\\\s*[\\\\(\\\\<]))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#array-literal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx meta.object-literal.key.tsx\",\n\t\t\t\t\t\"begin\": \"(?=[\\\\'\\\\\\\"\\\\`])\",\n\t\t\t\t\t\"end\": \"(?=:)|((?<=[\\\\'\\\\\\\"\\\\`])(?=((\\\\s*[\\\\(\\\\<,}])|(\\\\s+(as|satisifies)\\\\s+))))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx meta.object-literal.key.tsx\",\n\t\t\t\t\t\"begin\": \"(?x)(?=(\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$))|(\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$))|((?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)))\",\n\t\t\t\t\t\"end\": \"(?=:)|(?=\\\\s*([\\\\(\\\\<,}])|(\\\\s+as|satisifies\\\\s+))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#numeric-literal\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.method.declaration.tsx\",\n\t\t\t\t\t\"begin\": \"(?<=[\\\\]\\\\'\\\\\\\"\\\\`])(?=\\\\s*[\\\\(\\\\<])\",\n\t\t\t\t\t\"end\": \"(?=\\\\}|;|,)|(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#function-body\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx\",\n\t\t\t\t\t\"match\": \"(?![_$[:alpha:]])([[:digit:]]+)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.object-literal.key.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"constant.numeric.decimal.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx\",\n\t\t\t\t\t\"match\": \"(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:(\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)*\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.object-literal.key.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx\",\n\t\t\t\t\t\"match\": \"(?:[_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*:)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.object-literal.key.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx\",\n\t\t\t\t\t\"begin\": \"\\\\.\\\\.\\\\.\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.spread.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=,|\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx\",\n\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.readwrite.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*([,}]|$))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.as.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx\",\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.as.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.satisfies.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisifies)\\\\s+))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx\",\n\t\t\t\t\t\"begin\": \"(?=[_$[:alpha:]][_$[:alnum:]]*\\\\s*=)\",\n\t\t\t\t\t\"end\": \"(?=,|\\\\}|$|\\\\/\\\\/|\\\\/\\\\*)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.object.member.tsx\",\n\t\t\t\t\t\"begin\": \":\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.object-literal.key.tsx punctuation.separator.key-value.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=,|\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?<=:)\\\\s*(async)?(?=\\\\s*(<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?<=\\\\))\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"begin\": \"\\\\(\",\n\t\t\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"end\": \"\\\\)\",\n\t\t\t\t\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"include\": \"#expression-inside-possibly-arrow-parens\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"\\\\)\",\n\t\t\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#expression-inside-possibly-arrow-parens\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?<=:)\\\\s*(async)?\\\\s*(?=\\\\<\\\\s*$)\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(?<=\\\\>)\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?<=\\\\>)\\\\s*(\\\\()(?=\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"\\\\)\",\n\t\t\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#expression-inside-possibly-arrow-parens\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#possibly-arrow-return-type\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#decl-block\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"ternary-expression\": {\n\t\t\t\"begin\": \"(?!\\\\?\\\\.\\\\s*[^[:digit:]])(\\\\?)(?!\\\\?)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.ternary.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\s*(:)\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.ternary.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"function-call\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n\t\t\t\t\t\"end\": \"(?<=\\\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"meta.function-call.tsx\",\n\t\t\t\t\t\t\t\"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n\t\t\t\t\t\t\t\"end\": \"(?=\\\\s*(?:(\\\\?\\\\.\\\\s*)|(\\\\!))?((<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?\\\\())\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#function-call-target\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#function-call-optionals\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-arguments\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#paren-expression\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n\t\t\t\t\t\"end\": \"(?<=\\\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\\\)]))(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"meta.function-call.tsx\",\n\t\t\t\t\t\t\t\"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\\\s*\\\\??\\\\.\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*))\",\n\t\t\t\t\t\t\t\"end\": \"(?=(<\\\\s*[\\\\{\\\\[\\\\(]\\\\s*$))\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#function-call-target\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#function-call-optionals\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-arguments\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"function-call-target\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#support-function-call-identifiers\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entity.name.function.tsx\",\n\t\t\t\t\t\"match\": \"(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"function-call-optionals\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.function-call.tsx punctuation.accessor.optional.tsx\",\n\t\t\t\t\t\"match\": \"\\\\?\\\\.\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.function-call.tsx keyword.operator.definiteassignment.tsx\",\n\t\t\t\t\t\"match\": \"\\\\!\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"support-function-call-identifiers\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#support-objects\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-identifiers\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-accessor\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.expression.import.tsx\",\n\t\t\t\t\t\"match\": \"(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*[\\\\(]\\\\s*[\\\\\\\"\\\\'\\\\`]))\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"new-expr\": {\n\t\t\t\"name\": \"new.expr.tsx\",\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.new.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"instanceof-expr\": {\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.expression.instanceof.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?<=\\\\))|(?=[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|(===|!==|==|!=)|(([\\\\&\\\\~\\\\^\\\\|]\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s+instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))function((\\\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\\\s*[\\\\(]))))\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"paren-expression-possibly-arrow\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<=[(=,])\\\\s*(async)?(?=\\\\s*((<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\(\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<=\\\\))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<=[(=,]|=>|^return|[^\\\\._$[:alnum:]]return)\\\\s*(async)?(?=\\\\s*((((<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*))?\\\\()|(<)|((<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)))\\\\s*$)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.async.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<=\\\\))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#paren-expression-possibly-arrow-with-typeparameters\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#possibly-arrow-return-type\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"paren-expression-possibly-arrow-with-typeparameters\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"\\\\(\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#expression-inside-possibly-arrow-parens\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"expression-inside-possibly-arrow-parens\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expressionWithoutIdentifiers\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#decorator\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#destructuring-parameter\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|protected|private|readonly)\\\\s+(?=(override|public|protected|private|readonly)\\\\s+)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*\\n# function assignment |\\n(=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)) |\\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\\n(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))) |\\n(:\\\\s*(=>|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(<[^<>]*>)|[^<>(),=])+=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n)))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tsx variable.language.this.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(override|public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*(\\\\??)(?=\\\\s*[:,]|$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#variable-initializer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"punctuation.separator.parameter.tsx\",\n\t\t\t\t\t\"match\": \",\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#identifiers\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expressionPunctuations\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"paren-expression\": {\n\t\t\t\"begin\": \"\\\\(\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\)\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"cast\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"expression-operators\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.flow.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(await)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?=\\\\s*\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*\\\\*)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.flow.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\*\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.generator.asterisk.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(yield)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s*(\\\\*))?\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.flow.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.generator.asterisk.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.expression.delete.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))delete(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.expression.in.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))in(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.expression.of.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))of(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?!\\\\()\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.expression.instanceof.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))instanceof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.new.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))new(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#typeof-operator\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.expression.void.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))void(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as)\\\\s+(const)(?=\\\\s*($|[;,:})\\\\]]))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.as.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(as)|(satisfies))\\\\s+\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.as.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.satisfies.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=^|[;),}\\\\]:?\\\\-\\\\+\\\\>]|\\\\|\\\\||\\\\&\\\\&|\\\\!\\\\=\\\\=|$|((?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(as|satisfies)\\\\s+)|(\\\\s+\\\\<))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.spread.tsx\",\n\t\t\t\t\t\"match\": \"\\\\.\\\\.\\\\.\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.assignment.compound.tsx\",\n\t\t\t\t\t\"match\": \"\\\\*=|(?<!\\\\()/=|%=|\\\\+=|\\\\-=\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.assignment.compound.bitwise.tsx\",\n\t\t\t\t\t\"match\": \"\\\\&=|\\\\^=|<<=|>>=|>>>=|\\\\|=\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.bitwise.shift.tsx\",\n\t\t\t\t\t\"match\": \"<<|>>>|>>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.comparison.tsx\",\n\t\t\t\t\t\"match\": \"===|!==|==|!=\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.relational.tsx\",\n\t\t\t\t\t\"match\": \"<=|>=|<>|<|>\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<=[_$[:alnum:]])(\\\\!)\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.logical.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.compound.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.arithmetic.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.logical.tsx\",\n\t\t\t\t\t\"match\": \"\\\\!|&&|\\\\|\\\\||\\\\?\\\\?\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.bitwise.tsx\",\n\t\t\t\t\t\"match\": \"\\\\&|~|\\\\^|\\\\|\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\",\n\t\t\t\t\t\"match\": \"\\\\=\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.decrement.tsx\",\n\t\t\t\t\t\"match\": \"--\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.increment.tsx\",\n\t\t\t\t\t\"match\": \"\\\\+\\\\+\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.arithmetic.tsx\",\n\t\t\t\t\t\"match\": \"%|\\\\*|/|-|\\\\+\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?=(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)+(?:(/=)|(?:(/)(?![/*]))))\",\n\t\t\t\t\t\"end\": \"(?:(/=)|(?:(/)(?!\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/)))\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.compound.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.arithmetic.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<=[_$[:alnum:])\\\\]])\\\\s*(?:(/=)|(?:(/)(?![/*])))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.compound.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.arithmetic.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"typeof-operator\": {\n\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))typeof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"keyword.operator.expression.typeof.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?=[,);}\\\\]=>:&|{\\\\?]|(extends\\\\s+)|$|;|^\\\\s*$|(?:^\\\\s*(?:abstract|async|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|var|while)\\\\b))\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-arguments\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"literal\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#numeric-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#boolean-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#null-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#undefined-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#numericConstant-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#array-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#this-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#super-literal\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"array-literal\": {\n\t\t\t\"name\": \"meta.array.literal.tsx\",\n\t\t\t\"begin\": \"\\\\s*(\\\\[)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"meta.brace.square.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\]\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"meta.brace.square.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"numeric-literal\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.numeric.hex.tsx\",\n\t\t\t\t\t\"match\": \"\\\\b(?<!\\\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.numeric.binary.tsx\",\n\t\t\t\t\t\"match\": \"\\\\b(?<!\\\\$)0(?:b|B)[01][01_]*(n)?\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.numeric.octal.tsx\",\n\t\t\t\t\t\"match\": \"\\\\b(?<!\\\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)\\n(?<!\\\\$)(?:\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)| # 1.1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # 1.E+3\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|             # .1E+3\\n  (?:\\\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\\\b)|                 # 1E+3\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                      # 1.1\\n  (?:\\\\b[0-9][0-9_]*(\\\\.)(n)?\\\\B)|                                  # 1.\\n  (?:\\\\B(\\\\.)[0-9][0-9_]*(n)?\\\\b)|                                  # .1\\n  (?:\\\\b[0-9][0-9_]*(n)?\\\\b(?!\\\\.))                                 # 1\\n)(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"constant.numeric.decimal.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.delimiter.decimal.period.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"meta.delimiter.decimal.period.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"meta.delimiter.decimal.period.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"6\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"7\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"8\": {\n\t\t\t\t\t\t\t\"name\": \"meta.delimiter.decimal.period.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"9\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"10\": {\n\t\t\t\t\t\t\t\"name\": \"meta.delimiter.decimal.period.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"11\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"12\": {\n\t\t\t\t\t\t\t\"name\": \"meta.delimiter.decimal.period.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"13\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"14\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.numeric.bigint.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"boolean-literal\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.language.boolean.true.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))true(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.language.boolean.false.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))false(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"null-literal\": {\n\t\t\t\"name\": \"constant.language.null.tsx\",\n\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))null(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t},\n\t\t\"this-literal\": {\n\t\t\t\"name\": \"variable.language.this.tsx\",\n\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))this\\\\b(?!\\\\$)\"\n\t\t},\n\t\t\"super-literal\": {\n\t\t\t\"name\": \"variable.language.super.tsx\",\n\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))super\\\\b(?!\\\\$)\"\n\t\t},\n\t\t\"undefined-literal\": {\n\t\t\t\"name\": \"constant.language.undefined.tsx\",\n\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))undefined(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t},\n\t\t\"numericConstant-literal\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.language.nan.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))NaN(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.language.infinity.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Infinity(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"support-objects\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"variable.language.arguments.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(arguments)\\\\b(?!\\\\$)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"support.class.builtin.tsx\",\n\t\t\t\t\t\"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Array|ArrayBuffer|Atomics|BigInt|BigInt64Array|BigUint64Array|Boolean|DataView|Date|Float32Array\\n  |Float64Array|Function|Generator|GeneratorFunction|Int8Array|Int16Array|Int32Array|Intl|Map|Number|Object|Proxy\\n  |Reflect|RegExp|Set|SharedArrayBuffer|SIMD|String|Symbol|TypedArray\\n  |Uint8Array|Uint16Array|Uint32Array|Uint8ClampedArray|WeakMap|WeakSet)\\\\b(?!\\\\$)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"support.class.error.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))((Eval|Internal|Range|Reference|Syntax|Type|URI)?Error)\\\\b(?!\\\\$)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"support.class.promise.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Promise)\\\\b(?!\\\\$)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"support.function.tsx\",\n\t\t\t\t\t\"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(clear(Interval|Timeout)|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|eval|\\n  isFinite|isNaN|parseFloat|parseInt|require|set(Interval|Timeout)|super|unescape|uneval)(?=\\\\s*\\\\()\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Math)(?:\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  (abs|acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|clz32|cos|cosh|exp|\\n  expm1|floor|fround|hypot|imul|log|log10|log1p|log2|max|min|pow|random|\\n  round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\n  |\\n  (E|LN10|LN2|LOG10E|LOG2E|PI|SQRT1_2|SQRT2)))?\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"support.constant.math.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"support.function.math.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"support.constant.property.math.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(console)(?:\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\n  assert|clear|count|debug|dir|error|group|groupCollapsed|groupEnd|info|log\\n  |profile|profileEnd|table|time|timeEnd|timeStamp|trace|warn))?\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"support.class.console.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"support.function.console.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(JSON)(?:\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(parse|stringify))?\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"support.constant.json.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"support.function.json.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(import)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(meta)\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.import.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"support.variable.property.importmeta.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(new)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(target)\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.new.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"support.variable.property.target.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (?:(constructor|length|prototype|__proto__)\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\\\())\\n  |\\n  (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\\\b(?!\\\\$)))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"support.variable.property.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"support.constant.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x) (?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.)) \\\\b (?:\\n  (document|event|navigator|performance|screen|window)\\n  |\\n  (AnalyserNode|ArrayBufferView|Attr|AudioBuffer|AudioBufferSourceNode|AudioContext|AudioDestinationNode|AudioListener\\n  |AudioNode|AudioParam|BatteryManager|BeforeUnloadEvent|BiquadFilterNode|Blob|BufferSource|ByteString|CSS|CSSConditionRule\\n  |CSSCounterStyleRule|CSSGroupingRule|CSSMatrix|CSSMediaRule|CSSPageRule|CSSPrimitiveValue|CSSRule|CSSRuleList|CSSStyleDeclaration\\n  |CSSStyleRule|CSSStyleSheet|CSSSupportsRule|CSSValue|CSSValueList|CanvasGradient|CanvasImageSource|CanvasPattern\\n  |CanvasRenderingContext2D|ChannelMergerNode|ChannelSplitterNode|CharacterData|ChromeWorker|CloseEvent|Comment|CompositionEvent\\n  |Console|ConvolverNode|Coordinates|Credential|CredentialsContainer|Crypto|CryptoKey|CustomEvent|DOMError|DOMException\\n  |DOMHighResTimeStamp|DOMImplementation|DOMString|DOMStringList|DOMStringMap|DOMTimeStamp|DOMTokenList|DataTransfer\\n  |DataTransferItem|DataTransferItemList|DedicatedWorkerGlobalScope|DelayNode|DeviceProximityEvent|DirectoryEntry\\n  |DirectoryEntrySync|DirectoryReader|DirectoryReaderSync|Document|DocumentFragment|DocumentTouch|DocumentType|DragEvent\\n  |DynamicsCompressorNode|Element|Entry|EntrySync|ErrorEvent|Event|EventListener|EventSource|EventTarget|FederatedCredential\\n  |FetchEvent|File|FileEntry|FileEntrySync|FileException|FileList|FileReader|FileReaderSync|FileSystem|FileSystemSync\\n  |FontFace|FormData|GainNode|Gamepad|GamepadButton|GamepadEvent|Geolocation|GlobalEventHandlers|HTMLAnchorElement\\n  |HTMLAreaElement|HTMLAudioElement|HTMLBRElement|HTMLBaseElement|HTMLBodyElement|HTMLButtonElement|HTMLCanvasElement\\n  |HTMLCollection|HTMLContentElement|HTMLDListElement|HTMLDataElement|HTMLDataListElement|HTMLDialogElement|HTMLDivElement\\n  |HTMLDocument|HTMLElement|HTMLEmbedElement|HTMLFieldSetElement|HTMLFontElement|HTMLFormControlsCollection|HTMLFormElement\\n  |HTMLHRElement|HTMLHeadElement|HTMLHeadingElement|HTMLHtmlElement|HTMLIFrameElement|HTMLImageElement|HTMLInputElement\\n  |HTMLKeygenElement|HTMLLIElement|HTMLLabelElement|HTMLLegendElement|HTMLLinkElement|HTMLMapElement|HTMLMediaElement\\n  |HTMLMetaElement|HTMLMeterElement|HTMLModElement|HTMLOListElement|HTMLObjectElement|HTMLOptGroupElement|HTMLOptionElement\\n  |HTMLOptionsCollection|HTMLOutputElement|HTMLParagraphElement|HTMLParamElement|HTMLPreElement|HTMLProgressElement\\n  |HTMLQuoteElement|HTMLScriptElement|HTMLSelectElement|HTMLShadowElement|HTMLSourceElement|HTMLSpanElement|HTMLStyleElement\\n  |HTMLTableCaptionElement|HTMLTableCellElement|HTMLTableColElement|HTMLTableDataCellElement|HTMLTableElement|HTMLTableHeaderCellElement\\n  |HTMLTableRowElement|HTMLTableSectionElement|HTMLTextAreaElement|HTMLTimeElement|HTMLTitleElement|HTMLTrackElement\\n  |HTMLUListElement|HTMLUnknownElement|HTMLVideoElement|HashChangeEvent|History|IDBCursor|IDBCursorWithValue|IDBDatabase\\n  |IDBEnvironment|IDBFactory|IDBIndex|IDBKeyRange|IDBMutableFile|IDBObjectStore|IDBOpenDBRequest|IDBRequest|IDBTransaction\\n  |IDBVersionChangeEvent|IIRFilterNode|IdentityManager|ImageBitmap|ImageBitmapFactories|ImageData|Index|InputDeviceCapabilities\\n  |InputEvent|InstallEvent|InstallTrigger|KeyboardEvent|LinkStyle|LocalFileSystem|LocalFileSystemSync|Location|MIDIAccess\\n  |MIDIConnectionEvent|MIDIInput|MIDIInputMap|MIDIOutputMap|MediaElementAudioSourceNode|MediaError|MediaKeyMessageEvent\\n  |MediaKeySession|MediaKeyStatusMap|MediaKeySystemAccess|MediaKeySystemConfiguration|MediaKeys|MediaRecorder|MediaStream\\n  |MediaStreamAudioDestinationNode|MediaStreamAudioSourceNode|MessageChannel|MessageEvent|MessagePort|MouseEvent\\n  |MutationObserver|MutationRecord|NamedNodeMap|Navigator|NavigatorConcurrentHardware|NavigatorGeolocation|NavigatorID\\n  |NavigatorLanguage|NavigatorOnLine|Node|NodeFilter|NodeIterator|NodeList|NonDocumentTypeChildNode|Notification\\n  |OfflineAudioCompletionEvent|OfflineAudioContext|OscillatorNode|PageTransitionEvent|PannerNode|ParentNode|PasswordCredential\\n  |Path2D|PaymentAddress|PaymentRequest|PaymentResponse|Performance|PerformanceEntry|PerformanceFrameTiming|PerformanceMark\\n  |PerformanceMeasure|PerformanceNavigation|PerformanceNavigationTiming|PerformanceObserver|PerformanceObserverEntryList\\n  |PerformanceResourceTiming|PerformanceTiming|PeriodicSyncEvent|PeriodicWave|Plugin|Point|PointerEvent|PopStateEvent\\n  |PortCollection|Position|PositionError|PositionOptions|PresentationConnectionClosedEvent|PresentationConnectionList\\n  |PresentationReceiver|ProcessingInstruction|ProgressEvent|PromiseRejectionEvent|PushEvent|PushRegistrationManager\\n  |RTCCertificate|RTCConfiguration|RTCPeerConnection|RTCSessionDescriptionCallback|RTCStatsReport|RadioNodeList|RandomSource\\n  |Range|ReadableByteStream|RenderingContext|SVGAElement|SVGAngle|SVGAnimateColorElement|SVGAnimateElement|SVGAnimateMotionElement\\n  |SVGAnimateTransformElement|SVGAnimatedAngle|SVGAnimatedBoolean|SVGAnimatedEnumeration|SVGAnimatedInteger|SVGAnimatedLength\\n  |SVGAnimatedLengthList|SVGAnimatedNumber|SVGAnimatedNumberList|SVGAnimatedPoints|SVGAnimatedPreserveAspectRatio\\n  |SVGAnimatedRect|SVGAnimatedString|SVGAnimatedTransformList|SVGAnimationElement|SVGCircleElement|SVGClipPathElement\\n  |SVGCursorElement|SVGDefsElement|SVGDescElement|SVGElement|SVGEllipseElement|SVGEvent|SVGFilterElement|SVGFontElement\\n  |SVGFontFaceElement|SVGFontFaceFormatElement|SVGFontFaceNameElement|SVGFontFaceSrcElement|SVGFontFaceUriElement\\n  |SVGForeignObjectElement|SVGGElement|SVGGlyphElement|SVGGradientElement|SVGHKernElement|SVGImageElement|SVGLength\\n  |SVGLengthList|SVGLineElement|SVGLinearGradientElement|SVGMPathElement|SVGMaskElement|SVGMatrix|SVGMissingGlyphElement\\n  |SVGNumber|SVGNumberList|SVGPathElement|SVGPatternElement|SVGPoint|SVGPolygonElement|SVGPolylineElement|SVGPreserveAspectRatio\\n  |SVGRadialGradientElement|SVGRect|SVGRectElement|SVGSVGElement|SVGScriptElement|SVGSetElement|SVGStopElement|SVGStringList\\n  |SVGStylable|SVGStyleElement|SVGSwitchElement|SVGSymbolElement|SVGTRefElement|SVGTSpanElement|SVGTests|SVGTextElement\\n  |SVGTextPositioningElement|SVGTitleElement|SVGTransform|SVGTransformList|SVGTransformable|SVGUseElement|SVGVKernElement\\n  |SVGViewElement|ServiceWorker|ServiceWorkerContainer|ServiceWorkerGlobalScope|ServiceWorkerRegistration|ServiceWorkerState\\n  |ShadowRoot|SharedWorker|SharedWorkerGlobalScope|SourceBufferList|StereoPannerNode|Storage|StorageEvent|StyleSheet\\n  |StyleSheetList|SubtleCrypto|SyncEvent|Text|TextMetrics|TimeEvent|TimeRanges|Touch|TouchEvent|TouchList|Transferable\\n  |TreeWalker|UIEvent|USVString|VRDisplayCapabilities|ValidityState|WaveShaperNode|WebGL|WebGLActiveInfo|WebGLBuffer\\n  |WebGLContextEvent|WebGLFramebuffer|WebGLProgram|WebGLRenderbuffer|WebGLRenderingContext|WebGLShader|WebGLShaderPrecisionFormat\\n  |WebGLTexture|WebGLTimerQueryEXT|WebGLTransformFeedback|WebGLUniformLocation|WebGLVertexArrayObject|WebGLVertexArrayObjectOES\\n  |WebSocket|WebSockets|WebVTT|WheelEvent|Window|WindowBase64|WindowEventHandlers|WindowTimers|Worker|WorkerGlobalScope\\n  |WorkerLocation|WorkerNavigator|XMLHttpRequest|XMLHttpRequestEventTarget|XMLSerializer|XPathExpression|XPathResult\\n  |XSLTProcessor))\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"support.variable.dom.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"support.class.dom.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s* (?:\\n  (ATTRIBUTE_NODE|CDATA_SECTION_NODE|COMMENT_NODE|DOCUMENT_FRAGMENT_NODE|DOCUMENT_NODE|DOCUMENT_TYPE_NODE\\n  |DOMSTRING_SIZE_ERR|ELEMENT_NODE|ENTITY_NODE|ENTITY_REFERENCE_NODE|HIERARCHY_REQUEST_ERR|INDEX_SIZE_ERR\\n  |INUSE_ATTRIBUTE_ERR|INVALID_CHARACTER_ERR|NO_DATA_ALLOWED_ERR|NO_MODIFICATION_ALLOWED_ERR|NOT_FOUND_ERR\\n  |NOT_SUPPORTED_ERR|NOTATION_NODE|PROCESSING_INSTRUCTION_NODE|TEXT_NODE|WRONG_DOCUMENT_ERR)\\n  |\\n  (_content|[xyz]|abbr|above|accept|acceptCharset|accessKey|action|align|[av]Link(?:color)?|all|alt|anchors|appCodeName\\n  |appCore|applets|appMinorVersion|appName|appVersion|archive|areas|arguments|attributes|availHeight|availLeft|availTop\\n  |availWidth|axis|background|backgroundColor|backgroundImage|below|bgColor|body|border|borderBottomWidth|borderColor\\n  |borderLeftWidth|borderRightWidth|borderStyle|borderTopWidth|borderWidth|bottom|bufferDepth|callee|caller|caption\\n  |cellPadding|cells|cellSpacing|ch|characterSet|charset|checked|childNodes|chOff|cite|classes|className|clear\\n  |clientInformation|clip|clipBoardData|closed|code|codeBase|codeType|color|colorDepth|cols|colSpan|compact|complete\\n  |components|content|controllers|cookie|cookieEnabled|cords|cpuClass|crypto|current|data|dateTime|declare|defaultCharset\\n  |defaultChecked|defaultSelected|defaultStatus|defaultValue|defaultView|defer|description|dialogArguments|dialogHeight\\n  |dialogLeft|dialogTop|dialogWidth|dir|directories|disabled|display|docmain|doctype|documentElement|elements|embeds\\n  |enabledPlugin|encoding|enctype|entities|event|expando|external|face|fgColor|filename|firstChild|fontFamily|fontSize\\n  |fontWeight|form|formName|forms|frame|frameBorder|frameElement|frames|hasFocus|hash|headers|height|history|host\\n  |hostname|href|hreflang|hspace|htmlFor|httpEquiv|id|ids|ignoreCase|images|implementation|index|innerHeight|innerWidth\\n  |input|isMap|label|lang|language|lastChild|lastIndex|lastMatch|lastModified|lastParen|layer[sXY]|left|leftContext\\n  |lineHeight|link|linkColor|links|listStyleType|localName|location|locationbar|longDesc|lowsrc|lowSrc|marginBottom\\n  |marginHeight|marginLeft|marginRight|marginTop|marginWidth|maxLength|media|menubar|method|mimeTypes|multiline|multiple\\n  |name|nameProp|namespaces|namespaceURI|next|nextSibling|nodeName|nodeType|nodeValue|noHref|noResize|noShade|notationName\\n  |notations|noWrap|object|offscreenBuffering|onLine|onreadystatechange|opener|opsProfile|options|oscpu|outerHeight\\n  |outerWidth|ownerDocument|paddingBottom|paddingLeft|paddingRight|paddingTop|page[XY]|page[XY]Offset|parent|parentLayer\\n  |parentNode|parentWindow|pathname|personalbar|pixelDepth|pkcs11|platform|plugins|port|prefix|previous|previousDibling\\n  |product|productSub|profile|profileend|prompt|prompter|protocol|publicId|readOnly|readyState|referrer|rel|responseText\\n  |responseXML|rev|right|rightContext|rowIndex|rows|rowSpan|rules|scheme|scope|screen[XY]|screenLeft|screenTop|scripts\\n  |scrollbars|scrolling|sectionRowIndex|security|securityPolicy|selected|selectedIndex|selection|self|shape|siblingAbove\\n  |siblingBelow|size|source|specified|standby|start|status|statusbar|statusText|style|styleSheets|suffixes|summary\\n  |systemId|systemLanguage|tagName|tags|target|tBodies|text|textAlign|textDecoration|textIndent|textTransform|tFoot|tHead\\n  |title|toolbar|top|type|undefined|uniqueID|updateInterval|URL|URLUnencoded|useMap|userAgent|userLanguage|userProfile\\n  |vAlign|value|valueType|vendor|vendorSub|version|visibility|vspace|whiteSpace|width|X[MS]LDocument|zIndex))\\\\b(?!\\\\$|\\\\s*(<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\\\()\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"support.constant.dom.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"support.variable.property.dom.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"support.class.node.tsx\",\n\t\t\t\t\t\"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(Buffer|EventEmitter|Server|Pipe|Socket|REPLServer|ReadStream|WriteStream|Stream\\n  |Inflate|Deflate|InflateRaw|DeflateRaw|GZip|GUnzip|Unzip|Zip)\\\\b(?!\\\\$)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(process)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(?:\\n  (arch|argv|config|connected|env|execArgv|execPath|exitCode|mainModule|pid|platform|release|stderr|stdin|stdout|title|version|versions)\\n  |\\n  (abort|chdir|cwd|disconnect|exit|[sg]ete?[gu]id|send|[sg]etgroups|initgroups|kill|memoryUsage|nextTick|umask|uptime|hrtime)\\n))?\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"support.variable.object.process.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"support.variable.property.process.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"support.function.process.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(exports)|(module)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\\\b(?!\\\\$)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"support.type.object.module.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"support.type.object.module.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"support.type.object.module.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"support.variable.object.node.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(global|GLOBAL|root|__dirname|__filename)\\\\b(?!\\\\$)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x) (?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]]))) \\\\s*\\n(?:\\n (on(?:Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\\n   Readystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\\n   Before(?:cut|deactivate|unload|update|paste|print|editfocus|activate)|\\n   Blur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\\n   Change|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\\n   Datasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\\n   Dragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\\n   Errorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\n ) |\\n (shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\\n   scrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\\n   sup|sub|substr|substring|splice|split|send|set(?:Milliseconds|Seconds|Minutes|Hours|\\n   Month|Year|FullYear|Date|UTC(?:Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\\n   Time|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\\n   savePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\\n   contextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\\n   createEventObject|to(?:GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\\n   test|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\\n   untaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\\n   print|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\\n   fileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\\n   forward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\\n   abort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\\n   releaseCapture|releaseEvents|go|get(?:Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\\n   Time|Date|TimezoneOffset|UTC(?:Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\\n   Attention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\\n   moveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back\\n ) |\\n (acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\\n   appendChild|appendData|before|blur|canPlayType|captureStream|\\n   caretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\\n   cloneContents|cloneNode|cloneRange|close|closest|collapse|\\n   compareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\\n   convertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\\n   createAttributeNS|createCaption|createCDATASection|createComment|\\n   createContextualFragment|createDocument|createDocumentFragment|\\n   createDocumentType|createElement|createElementNS|createEntityReference|\\n   createEvent|createExpression|createHTMLDocument|createNodeIterator|\\n   createNSResolver|createProcessingInstruction|createRange|createShadowRoot|\\n   createTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\\n   deleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\\n   deleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\\n   enableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\\n   exitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\\n   getAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\\n   getAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\\n   getClientRects|getContext|getDestinationInsertionPoints|getElementById|\\n   getElementsByClassName|getElementsByName|getElementsByTagName|\\n   getElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\\n   getVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\\n   hasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\\n   insertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\\n   insertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\\n   isPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\\n   lookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\\n   moveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\\n   parentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\\n   previousSibling|probablySupportsContext|queryCommandEnabled|\\n   queryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\\n   querySelector|querySelectorAll|registerContentHandler|registerElement|\\n   registerProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\\n   removeAttributeNode|removeAttributeNS|removeChild|removeEventListener|\\n   removeItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\\n   requestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\\n   scrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\\n   setAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\\n   setCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\\n   setRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\\n   slice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\\n   submit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\\n   toDataURL|toggle|toString|values|write|writeln\\n ) |\\n (all|catch|finally|race|reject|resolve|then\\n )\\n)(?=\\\\s*\\\\()\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"support.function.event-handler.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"support.function.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"support.function.dom.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"6\": {\n\t\t\t\t\t\t\t\"name\": \"support.function.promise.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"identifiers\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#object-identifiers\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?:(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*=\\\\s*(\\n  ((async\\\\s+)?(\\n    (function\\\\s*[(<*]) |\\n    (function\\\\s+) |\\n    ([_$[:alpha:]][_$[:alnum:]]*\\\\s*=>)\\n  )) |\\n  ((async\\\\s*)?(\\n    ((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))))) |\\n    # sure shot arrow functions even if => is on new line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?\\n  [(]\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*\\n  (\\n    ([)]\\\\s*:) |                                                                                       # ():\\n    ((\\\\.\\\\.\\\\.\\\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\\\s*:)                                                                  # [(]param: | [(]...param:\\n  )\\n) |\\n(\\n  [<]\\\\s*[_$[:alpha:]][_$[:alnum:]]*\\\\s+extends\\\\s*[^=>]                                                              # < typeparam extends\\n) |\\n# arrow function possible to detect only with => on same line\\n(\\n  (<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<]|\\\\<\\\\s*(((const\\\\s+)?[_$[:alpha:]])|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\]))([^=<>]|=[^<])*\\\\>)*\\\\>)*>\\\\s*)?                                                                                 # typeparameters\\n  \\\\(\\\\s*(\\\\/\\\\*([^\\\\*]|(\\\\*[^\\\\/]))*\\\\*\\\\/\\\\s*)*(([_$[:alpha:]]|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\.\\\\.\\\\.\\\\s*[_$[:alpha:]]))([^()\\\\'\\\\\\\"\\\\`]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))*)?\\\\)   # parameters\\n  (\\\\s*:\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+)?                                                                        # return type\\n  \\\\s*=>                                                                                               # arrow operator\\n)\\n  ))\\n))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.constant.property.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.property.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"variable.other.constant.tsx\",\n\t\t\t\t\t\"match\": \"([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"variable.other.readwrite.tsx\",\n\t\t\t\t\t\"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"object-identifiers\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"support.class.tsx\",\n\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)(?=\\\\s*\\\\??\\\\.\\\\s*prototype\\\\b(?!\\\\$))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(?:\\n  (\\\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\\n  (\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.constant.object.property.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.object.property.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?:\\n  ([[:upper:]][_$[:digit:][:upper:]]*) |\\n  ([_$[:alpha:]][_$[:alnum:]]*)\\n)(?=\\\\s*\\\\??\\\\.\\\\s*\\\\#?[_$[:alpha:]][_$[:alnum:]]*)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.constant.object.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.object.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-annotation\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.type.annotation.tsx\",\n\t\t\t\t\t\"begin\": \"(:)(?=\\\\s*\\\\S)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.annotation.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<![:|&])(?!\\\\s*[|&]\\\\s+)((?=^|[,);\\\\}\\\\]]|//)|(?==[^>])|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.type.annotation.tsx\",\n\t\t\t\t\t\"begin\": \"(:)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.annotation.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<![:|&])((?=[,);\\\\}\\\\]]|\\\\/\\\\/)|(?==[^>])|(?=^\\\\s*$)|((?<=[\\\\}>\\\\]\\\\)]|[_$[:alpha:]])\\\\s*(?=\\\\{)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"parameter-type-annotation\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.type.annotation.tsx\",\n\t\t\t\t\t\"begin\": \"(:)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.annotation.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=[,)])|(?==[^>])\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"return-type\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.return.type.tsx\",\n\t\t\t\t\t\"begin\": \"(?<=\\\\))\\\\s*(:)(?=\\\\s*\\\\S)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.annotation.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<![:|&])(?=$|^|[{};,]|//)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#return-type-core\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.return.type.tsx\",\n\t\t\t\t\t\"begin\": \"(?<=\\\\))\\\\s*(:)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.annotation.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<![:|&])((?=[{};,]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#return-type-core\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"return-type-core\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<=[:|&])(?=\\\\s*\\\\{)\",\n\t\t\t\t\t\"end\": \"(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-object\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-predicate-operator\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"arrow-return-type\": {\n\t\t\t\"name\": \"meta.return.type.arrow.tsx\",\n\t\t\t\"begin\": \"(?<=\\\\))\\\\s*(:)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"keyword.operator.type.annotation.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#arrow-return-type-body\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"possibly-arrow-return-type\": {\n\t\t\t\"begin\": \"(?<=\\\\)|^)\\\\s*(:)(?=\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*=>)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?==>|\\\\{|(^\\\\s*(export|function|class|interface|let|var|(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)|(?:\\\\bawait\\\\s+(?:\\\\busing(?=\\\\s+(?!in\\\\b|of\\\\b(?!\\\\s*(?:of\\\\b|=)))[_$[:alpha:]])\\\\b)\\\\b)|const|import|enum|namespace|module|type|abstract|declare)\\\\s+))\",\n\t\t\t\"contentName\": \"meta.arrow.tsx meta.return.type.arrow.tsx\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#arrow-return-type-body\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"arrow-return-type-body\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<=[:])(?=\\\\s*\\\\{)\",\n\t\t\t\t\t\"end\": \"(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-object\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-predicate-operator\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-parameters\": {\n\t\t\t\"name\": \"meta.type.parameters.tsx\",\n\t\t\t\"begin\": \"(<)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.typeparameters.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(>)\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.typeparameters.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"storage.modifier.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\",\n\t\t\t\t\t\"match\": \"(=)(?!>)\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-arguments\": {\n\t\t\t\"name\": \"meta.type.parameters.tsx\",\n\t\t\t\"begin\": \"\\\\<\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.typeparameters.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\>\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.typeparameters.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-arguments-body\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-arguments-body\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(_)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-string\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#numeric-literal\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-primitive\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-builtin-literals\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-tuple\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-object\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-operators\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-conditional\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-fn-type-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-paren-or-function-parameters\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-function-return-type\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\\\\s*\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-name\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-primitive\": {\n\t\t\t\"name\": \"support.type.primitive.tsx\",\n\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t},\n\t\t\"type-builtin-literals\": {\n\t\t\t\"name\": \"support.type.builtin.tsx\",\n\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t},\n\t\t\"type-tuple\": {\n\t\t\t\"name\": \"meta.type.tuple.tsx\",\n\t\t\t\"begin\": \"\\\\[\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"meta.brace.square.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\]\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"meta.brace.square.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\",\n\t\t\t\t\t\"match\": \"\\\\.\\\\.\\\\.\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(\\\\?)?\\\\s*(:)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.label.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.separator.label.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-object\": {\n\t\t\t\"name\": \"meta.object.type.tsx\",\n\t\t\t\"begin\": \"\\\\{\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.block.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#method-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#indexer-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#indexer-mapped-type-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#field-declaration\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"\\\\.\\\\.\\\\.\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.spread.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\}|;|,|$)|(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-comma\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#punctuation-semicolon\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-conditional\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(extends)\\\\s+\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<=:)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"\\\\?\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"keyword.operator.ternary.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \":\",\n\t\t\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"keyword.operator.ternary.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-paren-or-function-parameters\": {\n\t\t\t\"name\": \"meta.type.paren.cover.tsx\",\n\t\t\t\"begin\": \"\\\\(\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\)\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"meta.brace.round.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=\\\\s*(:\\\\s*(\\n  (<) |\\n  ([(]\\\\s*(\\n    ([)]) |\\n    (\\\\.\\\\.\\\\.) |\\n    ([_$[:alnum:]]+\\\\s*(\\n      ([:,?=])|\\n      ([)]\\\\s*=>)\\n    ))\\n  ))\\n)) |\\n(:\\\\s*(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))Function(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))) |\\n(:\\\\s*((<\\\\s*$)|([\\\\(]\\\\s*((([\\\\{\\\\[]\\\\s*)?$)|((\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})\\\\s*((:\\\\s*\\\\{?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*)))|((\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])\\\\s*((:\\\\s*\\\\[?$)|((\\\\s*([^<>\\\\(\\\\)\\\\{\\\\}]|\\\\<([^<>]|\\\\<([^<>]|\\\\<[^<>]+\\\\>)+\\\\>)+\\\\>|\\\\([^\\\\(\\\\)]+\\\\)|\\\\{[^\\\\{\\\\}]+\\\\})+\\\\s*)?=\\\\s*))))))))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tsx variable.language.this.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(public|private|protected|readonly)\\\\s+)?(?:(\\\\.\\\\.\\\\.)\\\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s*(\\\\??)(?=:)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.rest.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.optional.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-annotation\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"punctuation.separator.parameter.tsx\",\n\t\t\t\t\t\"match\": \",\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-fn-type-parameters\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b(?=\\\\s*\\\\<)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.type.constructor.tsx storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"meta.type.constructor.tsx keyword.control.new.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<=>)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-parameters\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.type.constructor.tsx\",\n\t\t\t\t\t\"begin\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(abstract)\\\\s+)?(new)\\\\b\\\\s*(?=\\\\()\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.modifier.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.control.new.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<=\\\\))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#function-parameters\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.type.function.tsx\",\n\t\t\t\t\t\"begin\": \"(?x)(\\n  (?=\\n    [(]\\\\s*(\\n      ([)]) |\\n      (\\\\.\\\\.\\\\.) |\\n      ([_$[:alnum:]]+\\\\s*(\\n        ([:,?=])|\\n        ([)]\\\\s*=>)\\n      ))\\n    )\\n  )\\n)\",\n\t\t\t\t\t\"end\": \"(?<=\\\\))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#function-parameters\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-function-return-type\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.type.function.return.tsx\",\n\t\t\t\t\t\"begin\": \"(=>)(?=\\\\s*\\\\S)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.function.arrow.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<!=>)(?<![|&])(?=[,\\\\]\\\\)\\\\{\\\\}=;>:\\\\?]|//|$)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-function-return-type-core\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.type.function.return.tsx\",\n\t\t\t\t\t\"begin\": \"=>\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.function.arrow.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<!=>)(?<![|&])((?=[,\\\\]\\\\)\\\\{\\\\}=;:\\\\?>]|//|^\\\\s*$)|((?<=\\\\S)(?=\\\\s*$)))\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-function-return-type-core\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-function-return-type-core\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?<==>)(?=\\\\s*\\\\{)\",\n\t\t\t\t\t\"end\": \"(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-object\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-predicate-operator\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-operators\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#typeof-operator\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type-infer\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"([&|])(?=\\\\s*\\\\{)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?<=\\\\})\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-object\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"[&|]\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\S)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.expression.keyof.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))keyof(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.ternary.tsx\",\n\t\t\t\t\t\"match\": \"(\\\\?|\\\\:)\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.expression.import.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))import(?=\\\\s*\\\\()\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-infer\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(infer)\\\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))(?:\\\\s+(extends)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.)))?\",\n\t\t\t\t\t\"name\": \"meta.type.infer.tsx\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.expression.infer.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.expression.extends.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-predicate-operator\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(?:(asserts)\\\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\\\s(is)(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.asserts.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.expression.is.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))(asserts)\\\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.type.asserts.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx variable.language.this.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.parameter.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.type.asserts.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))asserts(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.expression.is.tsx\",\n\t\t\t\t\t\"match\": \"(?<![_$[:alnum:]])(?:(?<=\\\\.\\\\.\\\\.)|(?<!\\\\.))is(?![_$[:alnum:]])(?:(?=\\\\.\\\\.\\\\.)|(?!\\\\.))\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"type-name\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\\\\s*(<)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.module.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(>)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"contentName\": \"meta.type.parameters.tsx\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-arguments-body\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(<)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(>)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"contentName\": \"meta.type.parameters.tsx\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-arguments-body\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\\\\s*(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.module.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entity.name.type.tsx\",\n\t\t\t\t\t\"match\": \"[_$[:alpha:]][_$[:alnum:]]*\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"punctuation-comma\": {\n\t\t\t\"name\": \"punctuation.separator.comma.tsx\",\n\t\t\t\"match\": \",\"\n\t\t},\n\t\t\"punctuation-semicolon\": {\n\t\t\t\"name\": \"punctuation.terminator.statement.tsx\",\n\t\t\t\"match\": \";\"\n\t\t},\n\t\t\"punctuation-accessor\": {\n\t\t\t\"match\": \"(?:(\\\\.)|(\\\\?\\\\.(?!\\\\s*[[:digit:]])))\",\n\t\t\t\"captures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.accessor.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"punctuation.accessor.optional.tsx\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"string\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#qstring-single\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#qstring-double\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#template\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"qstring-double\": {\n\t\t\t\"name\": \"string.quoted.double.tsx\",\n\t\t\t\"begin\": \"\\\"\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.string.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(\\\")|((?:[^\\\\\\\\\\\\n])$)\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.string.end.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"invalid.illegal.newline.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string-character-escape\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"qstring-single\": {\n\t\t\t\"name\": \"string.quoted.single.tsx\",\n\t\t\t\"begin\": \"'\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.string.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(\\\\')|((?:[^\\\\\\\\\\\\n])$)\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.string.end.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"invalid.illegal.newline.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#string-character-escape\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"string-character-escape\": {\n\t\t\t\"name\": \"constant.character.escape.tsx\",\n\t\t\t\"match\": \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\\\{[0-9A-Fa-f]+\\\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)\"\n\t\t},\n\t\t\"template\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#template-call\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"contentName\": \"string.template.tsx\",\n\t\t\t\t\t\"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tagged-template.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"string.template.tsx punctuation.definition.string.template.begin.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"`\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"string.template.tsx punctuation.definition.string.template.end.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#template-substitution-element\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#string-character-escape\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"template-call\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n\t\t\t\t\t\"end\": \"(?=`)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"begin\": \"(?=(([_$[:alpha:]][_$[:alnum:]]*\\\\s*\\\\??\\\\.\\\\s*)*|(\\\\??\\\\.\\\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))\",\n\t\t\t\t\t\t\t\"end\": \"(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)?`)\",\n\t\t\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"include\": \"#support-function-call-identifiers\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"name\": \"entity.name.function.tagged-template.tsx\",\n\t\t\t\t\t\t\t\t\t\"match\": \"([_$[:alpha:]][_$[:alnum:]]*)\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-arguments\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?\\\\s*(?=(<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))(([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>|\\\\<\\\\s*(((keyof|infer|typeof|readonly)\\\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\\\{([^\\\\{\\\\}]|(\\\\{([^\\\\{\\\\}]|\\\\{[^\\\\{\\\\}]*\\\\})*\\\\}))*\\\\})|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(\\\\[([^\\\\[\\\\]]|(\\\\[([^\\\\[\\\\]]|\\\\[[^\\\\[\\\\]]*\\\\])*\\\\]))*\\\\])|(\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`))(?=\\\\s*([\\\\<\\\\>\\\\,\\\\.\\\\[]|=>|&(?!&)|\\\\|(?!\\\\|)))))([^<>\\\\(]|(\\\\(([^\\\\(\\\\)]|(\\\\(([^\\\\(\\\\)]|\\\\([^\\\\(\\\\)]*\\\\))*\\\\)))*\\\\))|(?<==)\\\\>)*(?<!=)\\\\>))*(?<!=)\\\\>)*(?<!=)>\\\\s*)`)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tagged-template.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=`)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-arguments\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"template-substitution-element\": {\n\t\t\t\"name\": \"meta.template.expression.tsx\",\n\t\t\t\"begin\": \"\\\\$\\\\{\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.template-expression.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.template-expression.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"contentName\": \"meta.embedded.line.tsx\"\n\t\t},\n\t\t\"type-string\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#qstring-single\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#qstring-double\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#template-type\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"template-type\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#template-call\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"contentName\": \"string.template.tsx\",\n\t\t\t\t\t\"begin\": \"([_$[:alpha:]][_$[:alnum:]]*)?(`)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.function.tagged-template.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"string.template.tsx punctuation.definition.string.template.begin.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"`\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"string.template.tsx punctuation.definition.string.template.end.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#template-type-substitution-element\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#string-character-escape\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"template-type-substitution-element\": {\n\t\t\t\"name\": \"meta.template.expression.tsx\",\n\t\t\t\"begin\": \"\\\\$\\\\{\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.template-expression.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.template-expression.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#type\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"contentName\": \"meta.embedded.line.tsx\"\n\t\t},\n\t\t\"regex\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"string.regexp.tsx\",\n\t\t\t\t\t\"begin\": \"(?<!\\\\+\\\\+|--|})(?<=[=(:,\\\\[?+!]|^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case|=>|&&|\\\\|\\\\||\\\\*\\\\/)\\\\s*(\\\\/)(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[\\\\()]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)+\\\\]|\\\\(([^\\\\)\\\\\\\\]|\\\\\\\\.)+\\\\))+\\\\/([dgimsuvy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.string.begin.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(/)([dgimsuvy]*)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.string.end.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.other.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"string.regexp.tsx\",\n\t\t\t\t\t\"begin\": \"((?<![_$[:alnum:])\\\\]]|\\\\+\\\\+|--|}|\\\\*\\\\/)|((?<=^return|[^\\\\._$[:alnum:]]return|^case|[^\\\\._$[:alnum:]]case))\\\\s*)\\\\/(?![\\\\/*])(?=(?:[^\\\\/\\\\\\\\\\\\[]|\\\\\\\\.|\\\\[([^\\\\]\\\\\\\\]|\\\\\\\\.)*\\\\])+\\\\/([dgimsuvy]+|(?![\\\\/\\\\*])|(?=\\\\/\\\\*))(?!\\\\s*[a-zA-Z0-9_$]))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.string.begin.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(/)([dgimsuvy]*)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.string.end.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.other.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"regexp\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.control.anchor.regexp\",\n\t\t\t\t\t\"match\": \"\\\\\\\\[bB]|\\\\^|\\\\$\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"\\\\\\\\[1-9]\\\\d*|\\\\\\\\k<([a-zA-Z_$][\\\\w$]*)>\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.other.back-reference.regexp\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.quantifier.regexp\",\n\t\t\t\t\t\"match\": \"[?+*]|\\\\{(\\\\d+,\\\\d+|\\\\d+,|,\\\\d+|\\\\d+)\\\\}\\\\??\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"keyword.operator.or.regexp\",\n\t\t\t\t\t\"match\": \"\\\\|\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.group.assertion.regexp\",\n\t\t\t\t\t\"begin\": \"(\\\\()((\\\\?=)|(\\\\?!)|(\\\\?<=)|(\\\\?<!))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.group.regexp\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.group.assertion.regexp\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"meta.assertion.look-ahead.regexp\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"meta.assertion.negative-look-ahead.regexp\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"meta.assertion.look-behind.regexp\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"6\": {\n\t\t\t\t\t\t\t\"name\": \"meta.assertion.negative-look-behind.regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(\\\\))\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.group.regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.group.regexp\",\n\t\t\t\t\t\"begin\": \"\\\\((?:(\\\\?:)|(?:\\\\?<([a-zA-Z_$][\\\\w$]*)>))?\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.group.regexp\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.group.no-capture.regexp\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.group.regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.other.character-class.set.regexp\",\n\t\t\t\t\t\"begin\": \"(\\\\[)(\\\\^)?\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.character-class.regexp\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.negation.regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(\\\\])\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.character-class.regexp\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"constant.other.character-class.range.regexp\",\n\t\t\t\t\t\t\t\"match\": \"(?:.|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\\\\-(?:[^\\\\]\\\\\\\\]|(\\\\\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\\\\\c[A-Z])|(\\\\\\\\.))\",\n\t\t\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"constant.character.numeric.regexp\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"constant.character.control.regexp\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"constant.character.escape.backslash.regexp\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"constant.character.numeric.regexp\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"constant.character.control.regexp\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"6\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"constant.character.escape.backslash.regexp\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#regex-character-class\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#regex-character-class\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"regex-character-class\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.other.character-class.regexp\",\n\t\t\t\t\t\"match\": \"\\\\\\\\[wWsSdDtrnvf]|\\\\.\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.character.numeric.regexp\",\n\t\t\t\t\t\"match\": \"\\\\\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.character.control.regexp\",\n\t\t\t\t\t\"match\": \"\\\\\\\\c[A-Z]\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.character.escape.backslash.regexp\",\n\t\t\t\t\t\"match\": \"\\\\\\\\.\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"comment\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"comment.block.documentation.tsx\",\n\t\t\t\t\t\"begin\": \"/\\\\*\\\\*(?!/)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.comment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\*/\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.comment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#docblock\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"comment.block.tsx\",\n\t\t\t\t\t\"begin\": \"(/\\\\*)(?:\\\\s*((@)internal)(?=\\\\s|(\\\\*/)))?\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.comment.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.internaldeclaration.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.decorator.internaldeclaration.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"\\\\*/\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.comment.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.whitespace.comment.leading.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"comment.line.double-slash.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.comment.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.internaldeclaration.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.decorator.internaldeclaration.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=$)\",\n\t\t\t\t\t\"contentName\": \"comment.line.double-slash.tsx\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"single-line-comment-consuming-line-ending\": {\n\t\t\t\"begin\": \"(^[ \\\\t]+)?((//)(?:\\\\s*((@)internal)(?=\\\\s|$))?)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.whitespace.comment.leading.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"comment.line.double-slash.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.comment.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"storage.type.internaldeclaration.tsx\"\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"name\": \"punctuation.decorator.internaldeclaration.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?=^)\",\n\t\t\t\"contentName\": \"comment.line.double-slash.tsx\"\n\t\t},\n\t\t\"directives\": {\n\t\t\t\"name\": \"comment.line.triple-slash.directive.tsx\",\n\t\t\t\"begin\": \"^(///)\\\\s*(?=<(reference|amd-dependency|amd-module)(\\\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\\\s*=\\\\s*((\\\\'([^\\\\'\\\\\\\\]|\\\\\\\\.)*\\\\')|(\\\\\\\"([^\\\\\\\"\\\\\\\\]|\\\\\\\\.)*\\\\\\\")|(\\\\`([^\\\\`\\\\\\\\]|\\\\\\\\.)*\\\\`)))+\\\\s*/>\\\\s*$)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.comment.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"end\": \"(?=$)\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.tag.tsx\",\n\t\t\t\t\t\"begin\": \"(<)(reference|amd-dependency|amd-module)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.tag.directive.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.tag.directive.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"/>\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.tag.directive.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"entity.other.attribute-name.directive.tsx\",\n\t\t\t\t\t\t\t\"match\": \"path|types|no-default-lib|lib|name|resolution-mode\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.tsx\",\n\t\t\t\t\t\t\t\"match\": \"=\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#string\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"docblock\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)\\n((@)(?:access|api))\\n\\\\s+\\n(private|protected|public)\\n\\\\b\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"constant.language.access-type.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)\\n((@)author)\\n\\\\s+\\n(\\n  [^@\\\\s<>*/]\\n  (?:[^@<>*/]|\\\\*[^/])*\\n)\\n(?:\\n  \\\\s*\\n  (<)\\n  ([^>\\\\s]+)\\n  (>)\\n)?\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.instance.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"constant.other.email.link.underline.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"6\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)\\n((@)borrows) \\\\s+\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <that namepath>\\n\\\\s+ (as) \\\\s+              # as\\n((?:[^@\\\\s*/]|\\\\*[^/])+)    # <this namepath>\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.instance.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"keyword.operator.control.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.instance.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"meta.example.jsdoc\",\n\t\t\t\t\t\"begin\": \"((@)example)\\\\s+\",\n\t\t\t\t\t\"end\": \"(?=@|\\\\*/)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"match\": \"^\\\\s\\\\*\\\\s+\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"contentName\": \"constant.other.description.jsdoc\",\n\t\t\t\t\t\t\t\"begin\": \"\\\\G(<)caption(>)\",\n\t\t\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"entity.name.tag.inline.jsdoc\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\"end\": \"(</)caption(>)|(?=\\\\*/)\",\n\t\t\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"entity.name.tag.inline.jsdoc\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.angle.begin.jsdoc\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.angle.end.jsdoc\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"match\": \"[^\\\\s@*](?:[^*]|\\\\*[^/])*\",\n\t\t\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"source.embedded.tsx\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x) ((@)kind) \\\\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\\\b\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"constant.language.symbol-type.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)\\n((@)see)\\n\\\\s+\\n(?:\\n  # URL\\n  (\\n    (?=https?://)\\n    (?:[^\\\\s*]|\\\\*[^/])+\\n  )\\n  |\\n  # JSDoc namepath\\n  (\\n    (?!\\n      # Avoid matching bare URIs (also acceptable as links)\\n      https?://\\n      |\\n      # Avoid matching {@inline tags}; we match those below\\n      (?:\\\\[[^\\\\[\\\\]]*\\\\])? # Possible description [preceding]{@tag}\\n      {@(?:link|linkcode|linkplain|tutorial)\\\\b\\n    )\\n    # Matched namepath\\n    (?:[^@\\\\s*/]|\\\\*[^/])+\\n  )\\n)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.link.underline.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.instance.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)\\n((@)template)\\n\\\\s+\\n# One or more valid identifiers\\n(\\n  [A-Za-z_$]         # First character: non-numeric word character\\n  [\\\\w$.\\\\[\\\\]]*        # Rest of identifier\\n  (?:                # Possible list of additional identifiers\\n    \\\\s* , \\\\s*\\n    [A-Za-z_$]\\n    [\\\\w$.\\\\[\\\\]]*\\n  )*\\n)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?x)((@)template)\\\\s+(?={)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#jsdoctype\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"variable.other.jsdoc\",\n\t\t\t\t\t\t\t\"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)\\n(\\n  (@)\\n  (?:arg|argument|const|constant|member|namespace|param|var)\\n)\\n\\\\s+\\n(\\n  [A-Za-z_$]\\n  [\\\\w$.\\\\[\\\\]]*\\n)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"((@)typedef)\\\\s+(?={)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#jsdoctype\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.instance.jsdoc\",\n\t\t\t\t\t\t\t\"match\": \"(?:[^@\\\\s*/]|\\\\*[^/])+\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\\\s+(?={)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#jsdoctype\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"variable.other.jsdoc\",\n\t\t\t\t\t\t\t\"match\": \"([A-Za-z_$][\\\\w$.\\\\[\\\\]]*)\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"name\": \"variable.other.jsdoc\",\n\t\t\t\t\t\t\t\"match\": \"(?x)\\n(\\\\[)\\\\s*\\n[\\\\w$]+\\n(?:\\n  (?:\\\\[\\\\])?                                        # Foo[ ].bar properties within an array\\n  \\\\.                                                # Foo.Bar namespaced parameter\\n  [\\\\w$]+\\n)*\\n(?:\\n  \\\\s*\\n  (=)                                                # [foo=bar] Default parameter value\\n  \\\\s*\\n  (\\n    # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\\n    (?>\\n      \\\"(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!\\\"))|[^*\\\\\\\\])*?\\\" |                      # [foo=\\\"bar\\\"] Double-quoted\\n      '(?:(?:\\\\*(?!/))|(?:\\\\\\\\(?!'))|[^*\\\\\\\\])*?' |                      # [foo='bar'] Single-quoted\\n      \\\\[ (?:(?:\\\\*(?!/))|[^*])*? \\\\] |                                # [foo=[1,2]] Array literal\\n      (?:(?:\\\\*(?!/))|\\\\s(?!\\\\s*\\\\])|\\\\[.*?(?:\\\\]|(?=\\\\*/))|[^*\\\\s\\\\[\\\\]])*   # Everything else\\n    )*\\n  )\\n)?\\n\\\\s*(?:(\\\\])((?:[^*\\\\s]|\\\\*[^\\\\s/])+)?|(?=\\\\*/))\",\n\t\t\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.definition.optional-value.begin.bracket.square.jsdoc\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"keyword.operator.assignment.jsdoc\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"source.embedded.tsx\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.definition.optional-value.end.bracket.square.jsdoc\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"invalid.illegal.syntax.jsdoc\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(?x)\\n(\\n  (@)\\n  (?:define|enum|exception|export|extends|lends|implements|modifies\\n  |namespace|private|protected|returns?|satisfies|suppress|this|throws|type\\n  |yields?)\\n)\\n\\\\s+(?={)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=\\\\s|\\\\*/|[^{}\\\\[\\\\]A-Za-z_$])\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#jsdoctype\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"(?x)\\n(\\n  (@)\\n  (?:alias|augments|callback|constructs|emits|event|fires|exports?\\n  |extends|external|function|func|host|lends|listens|interface|memberof!?\\n  |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\\n)\\n\\\\s+\\n(\\n  (?:\\n    [^{}@\\\\s*] | \\\\*[^/]\\n  )+\\n)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.instance.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"contentName\": \"variable.other.jsdoc\",\n\t\t\t\t\t\"begin\": \"((@)(?:default(?:value)?|license|version))\\\\s+(([''\\\"]))\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.string.begin.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(\\\\3)|(?=$|\\\\*/)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.string.end.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"((@)(?:default(?:value)?|license|tutorial|variation|version))\\\\s+([^\\\\s*]+)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"variable.other.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\",\n\t\t\t\t\t\"match\": \"(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\\\b\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#inline-tags\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"match\": \"((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\\\s+)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.block.tag.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"brackets\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"{\",\n\t\t\t\t\t\"end\": \"}|(?=\\\\*/)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#brackets\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"\\\\[\",\n\t\t\t\t\t\"end\": \"\\\\]|(?=\\\\*/)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#brackets\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"inline-tags\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.other.description.jsdoc\",\n\t\t\t\t\t\"match\": \"(\\\\[)[^\\\\]]+(\\\\])(?={@(?:link|linkcode|linkplain|tutorial))\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.square.begin.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.square.end.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"entity.name.type.instance.jsdoc\",\n\t\t\t\t\t\"begin\": \"({)((@)(?:link(?:code|plain)?|tutorial))\\\\s*\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"storage.type.class.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.inline.tag.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"}|(?=\\\\*/)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"match\": \"\\\\G((?=https?://)(?:[^|}\\\\s*]|\\\\*[/])+)(\\\\|)?\",\n\t\t\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"variable.other.link.underline.jsdoc\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.separator.pipe.jsdoc\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"match\": \"\\\\G((?:[^{}@\\\\s|*]|\\\\*[^/])+)(\\\\|)?\",\n\t\t\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"variable.other.description.jsdoc\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\t\t\"name\": \"punctuation.separator.pipe.jsdoc\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsdoctype\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"invalid.illegal.type.jsdoc\",\n\t\t\t\t\t\"match\": \"\\\\G{(?:[^}*]|\\\\*[^/}])+$\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"contentName\": \"entity.name.type.instance.jsdoc\",\n\t\t\t\t\t\"begin\": \"\\\\G({)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"0\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.instance.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.curly.begin.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"((}))\\\\s*|(?=\\\\*/)\",\n\t\t\t\t\t\"endCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.type.instance.jsdoc\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.bracket.curly.end.jsdoc\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#brackets\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-tag-without-attributes-in-expression\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-tag-in-expression\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-tag-without-attributes-in-expression\": {\n\t\t\t\"begin\": \"(?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n\t\t\t\"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-tag-without-attributes\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-tag-without-attributes\": {\n\t\t\t\"name\": \"meta.tag.without-attributes.tsx\",\n\t\t\t\"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n\t\t\t\"end\": \"(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>)\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.tag.begin.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"entity.name.tag.namespace.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"punctuation.separator.namespace.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"entity.name.tag.tsx\"\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"name\": \"support.class.component.tsx\"\n\t\t\t\t},\n\t\t\t\t\"6\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.tag.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.tag.begin.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"entity.name.tag.namespace.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"punctuation.separator.namespace.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"entity.name.tag.tsx\"\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"name\": \"support.class.component.tsx\"\n\t\t\t\t},\n\t\t\t\t\"6\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.tag.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"contentName\": \"meta.jsx.children.tsx\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-children\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-tag-in-expression\": {\n\t\t\t\"begin\": \"(?x)\\n  (?<!\\\\+\\\\+|--)(?<=[({\\\\[,?=>:*]|&&|\\\\|\\\\||\\\\?|\\\\*\\\\/|^await|[^\\\\._$[:alnum:]]await|^return|[^\\\\._$[:alnum:]]return|^default|[^\\\\._$[:alnum:]]default|^yield|[^\\\\._$[:alnum:]]yield|^)\\\\s*\\n  (?!<\\\\s*[_$[:alpha:]][_$[:alnum:]]*((\\\\s+extends\\\\s+[^=>])|,)) # look ahead is not type parameter of arrow\\n  (?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n\t\t\t\"end\": \"(?!(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-tag\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-tag\": {\n\t\t\t\"name\": \"meta.tag.tsx\",\n\t\t\t\"begin\": \"(?=(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>))\",\n\t\t\t\"end\": \"(/>)|(?:(</)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))?\\\\s*(>))\",\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.tag.end.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.tag.begin.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"entity.name.tag.namespace.tsx\"\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"name\": \"punctuation.separator.namespace.tsx\"\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"name\": \"entity.name.tag.tsx\"\n\t\t\t\t},\n\t\t\t\t\"6\": {\n\t\t\t\t\t\"name\": \"support.class.component.tsx\"\n\t\t\t\t},\n\t\t\t\t\"7\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.tag.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(<)\\\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\\\.|-))(?=((<\\\\s*)|(\\\\s+))(?!\\\\?)|\\\\/?>)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.tag.begin.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"2\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.tag.namespace.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.separator.namespace.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"4\": {\n\t\t\t\t\t\t\t\"name\": \"entity.name.tag.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"5\": {\n\t\t\t\t\t\t\t\"name\": \"support.class.component.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=[/]?>)\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#type-arguments\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#jsx-tag-attributes\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"begin\": \"(>)\",\n\t\t\t\t\t\"beginCaptures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.tag.end.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t\"end\": \"(?=</)\",\n\t\t\t\t\t\"contentName\": \"meta.jsx.children.tsx\",\n\t\t\t\t\t\"patterns\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"include\": \"#jsx-children\"\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-children\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-tag-without-attributes\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-tag\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-evaluated-code\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-entities\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-evaluated-code\": {\n\t\t\t\"contentName\": \"meta.embedded.expression.tsx\",\n\t\t\t\"begin\": \"\\\\{\",\n\t\t\t\"end\": \"\\\\}\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.section.embedded.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.section.embedded.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#expression\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-entities\": {\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"constant.character.entity.tsx\",\n\t\t\t\t\t\"match\": \"(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)\",\n\t\t\t\t\t\"captures\": {\n\t\t\t\t\t\t\"1\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.entity.tsx\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\"3\": {\n\t\t\t\t\t\t\t\"name\": \"punctuation.definition.entity.tsx\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-tag-attributes\": {\n\t\t\t\"name\": \"meta.tag.attributes.tsx\",\n\t\t\t\"begin\": \"\\\\s+\",\n\t\t\t\"end\": \"(?=[/]?>)\",\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#comment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-tag-attribute-name\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-tag-attribute-assignment\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-string-double-quoted\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-string-single-quoted\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-evaluated-code\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-tag-attributes-illegal\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-tag-attribute-name\": {\n\t\t\t\"match\": \"(?x)\\n  \\\\s*\\n  (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\\n  ([_$[:alpha:]][-_$[:alnum:]]*)\\n  (?=\\\\s|=|/?>|/\\\\*|//)\",\n\t\t\t\"captures\": {\n\t\t\t\t\"1\": {\n\t\t\t\t\t\"name\": \"entity.other.attribute-name.namespace.tsx\"\n\t\t\t\t},\n\t\t\t\t\"2\": {\n\t\t\t\t\t\"name\": \"punctuation.separator.namespace.tsx\"\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"name\": \"entity.other.attribute-name.tsx\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"jsx-tag-attribute-assignment\": {\n\t\t\t\"name\": \"keyword.operator.assignment.tsx\",\n\t\t\t\"match\": \"=(?=\\\\s*(?:'|\\\"|{|/\\\\*|//|\\\\n))\"\n\t\t},\n\t\t\"jsx-string-double-quoted\": {\n\t\t\t\"name\": \"string.quoted.double.tsx\",\n\t\t\t\"begin\": \"\\\"\",\n\t\t\t\"end\": \"\\\"\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.string.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.string.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-entities\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-string-single-quoted\": {\n\t\t\t\"name\": \"string.quoted.single.tsx\",\n\t\t\t\"begin\": \"'\",\n\t\t\t\"end\": \"'\",\n\t\t\t\"beginCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.string.begin.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"endCaptures\": {\n\t\t\t\t\"0\": {\n\t\t\t\t\t\"name\": \"punctuation.definition.string.end.tsx\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"patterns\": [\n\t\t\t\t{\n\t\t\t\t\t\"include\": \"#jsx-entities\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t\"jsx-tag-attributes-illegal\": {\n\t\t\t\"name\": \"invalid.illegal.attribute.tsx\",\n\t\t\t\"match\": \"\\\\S+\"\n\t\t}\n\t}\n}\n", "import { unhandledError } from \"@framerjs/shared\"\nimport engine from \"document/engine.ts\"\nimport { addBeforeUnloadHandler } from \"document/utils/beforeUnloadHandler.ts\"\nimport * as monaco from \"monaco-editor\"\nimport { editorPath } from \"utils/platformPaths.ts\"\nimport { isString } from \"utils/typeChecks.ts\"\nimport { installErrorManager } from \"./ErrorAndDecoratorManager.ts\"\nimport { FileManager } from \"./FileManager.ts\"\nimport { MonacoModelFactory } from \"./MonacoModelFactory.tsx\"\nimport { installTextmateGrammars } from \"./grammars/index.ts\"\nimport { log } from \"./logger.ts\"\nimport { formatCode } from \"./prettierFormatter.ts\"\n\n// Monaco uses one global workspace for typechecking and imports. We setup what\n// we want from that workspace here.\n\n// setup a single file manager with monaco models\n\nconst modelFactory = new MonacoModelFactory()\n\ninstallTextmateGrammars().catch(unhandledError)\n\nsetupMonacoErrorFilters()\n\nexport const fileManager = new FileManager(modelFactory, engine.stores.modulesStore)\n\nsetupMonacoEnvironment()\n\ninstallErrorManager()\n\nsetupTypescriptCompiler()\n\nsetupCodeFormatter()\n\nsetupExtraLibs()\n\ninstallPendingChangesCheck()\n\n// -------------------------------------------------------------\n// -------------------------------------------------------------\n// -------------------------------------------------------------\n\nfunction isHttpURL(str: string): boolean {\n\t// From https://github.com/denoland/vscode_deno/blob/6f05bab521ab793957fffe8f42f9f92774dd2527/core/util.ts#L50-L60\n\tif (!/^https?:\\/\\/.+/.test(str)) {\n\t\treturn false\n\t}\n\ttry {\n\t\tnew URL(str)\n\t\treturn true\n\t} catch {\n\t\treturn false\n\t}\n}\n\nfunction setupMonacoEnvironment() {\n\t// Based on https://github.com/microsoft/monaco-editor/blob/master/docs/integrate-esm.md#option-2-using-plain-webpack\n\t// Monaco worker chunks, per https://github.com/microsoft/monaco-editor/blob/master/docs/integrate-esm.md#option-2-using-plain-webpack\n\t// Note: these chunks must match a) chunks in webpack.monaco.js;\n\t// b) chunks in esbuild/vekter.esbuild.mjs\n\t;(window as any).MonacoEnvironment = {\n\t\tgetWorkerUrl: function (_moduleId: string, label: string) {\n\t\t\tif (label === \"typescript\" || label === \"javascript\") {\n\t\t\t\treturn editorPath(`./ts.worker.mjs`)\n\t\t\t} else if (label === \"json\") {\n\t\t\t\treturn editorPath(`./json.worker.mjs`)\n\t\t\t} else {\n\t\t\t\treturn editorPath(`./editor.worker.mjs`)\n\t\t\t}\n\t\t},\n\t}\n}\n\nconst importRegex = /Cannot find module '([^']*)'/u\nconst extensionMessageRegex =\n\t/^An import path cannot end with a '(.*?)' extension\\. Consider importing '(.*?)' instead\\.$/u\n\n// This is used to make the code editor more user-friendly we are mapping some common Typescript type errors to warnings.\n// Referenced list: https://github.com/microsoft/TypeScript/blob/main/src/compiler/diagnosticMessages.json\nconst errorToWarnings = new Set([\n\t\"2322\" /* Type '{0}' is not assignable to type '{1}'. */,\n\t\"2345\" /* \"Argument of type '{0}' is not assignable to parameter of type '{1}'.\" */,\n\t\"2339\" /* \"Property '{0}' does not exist on type '{1}'.\" */,\n\t\"2531\" /* \"Object is possibly 'null'.\" */,\n\t\"2532\" /* \"Object is possibly 'undefined'.\" */,\n\t\"2533\" /* \"Object is possibly 'null' or 'undefined'.\" */,\n\t\"2769\" /* \"No overload matches this call.\" */,\n])\n\nfunction filterImportErrors(\n\tmodel: monaco.editor.ITextModel,\n\tmarkers: monaco.editor.IMarkerData[],\n): monaco.editor.IMarkerData[] {\n\tconst hasReact = modelFactory.hasLibrary(\"react\")\n\tconst hasFramer = modelFactory.hasLibrary(\"framer\")\n\n\tif (hasReact && hasFramer) return markers\n\tif (markers.length === 0) return markers\n\n\tif (log.isLoggingTraceMessages()) {\n\t\tlog.trace(\"filtering imports:\", { hasReact, hasFramer }, markers)\n\t}\n\n\treturn markers\n\t\t.filter(marker => {\n\t\t\tif (marker.code === \"2691\") {\n\t\t\t\t// We cannot use `diagnosticCodesToIgnore` to ignore this code as we only want to ignore a subset of errors it reports\n\t\t\t\t// based on message pattern of 2691 errors we extract the import name:\n\t\t\t\t// \"An import path cannot end with a '.tsx' extension. Consider importing 'Foo3' instead.\"\n\t\t\t\t// |-------------------------------|match[1]|---------------------------|match[2]|-------|\n\t\t\t\tconst moduleNameMatch = marker.message.match(extensionMessageRegex)\n\t\t\t\tif (!moduleNameMatch || !moduleNameMatch[2]) return true\n\t\t\t\treturn !moduleNameMatch[2].startsWith(\"./\") && !moduleNameMatch[2].startsWith(\"../\")\n\t\t\t}\n\n\t\t\tconst match = importRegex.exec(marker.message)\n\t\t\tconst name = match?.[1]\n\t\t\tif (!name) return true\n\n\t\t\tif (name === \"react\") return hasReact\n\t\t\tif (name === \"framer\") return hasFramer\n\n\t\t\t/* Ignore error for module URL imports */\n\t\t\tif (isHttpURL(name)) return false\n\n\t\t\treturn !fileManager.hasModule(name)\n\t\t})\n\t\t.map(marker => {\n\t\t\tconst code = isString(marker?.code) ? marker.code : undefined\n\t\t\tif (code && errorToWarnings.has(code)) {\n\t\t\t\tmarker.severity = monaco.MarkerSeverity.Warning\n\t\t\t}\n\n\t\t\treturn marker\n\t\t})\n}\n\n/**\n * setModelMarkers is patched here to intercept when errors are set on a model, we use it here to:\n * - hide import errors\n * - change the fileBrowser error state.\n *\n * Note: monaco.editor.setModelMarkers is called after a 500ms debounce internally in the monaco-editors typescript language service.\n */\nfunction setupMonacoErrorFilters() {\n\tconst origSetModelMarkers = monaco.editor.setModelMarkers\n\tmonaco.editor.setModelMarkers = function (\n\t\tmodel: monaco.editor.ITextModel,\n\t\towner: string,\n\t\tmarkers: monaco.editor.IMarkerData[],\n\t): void {\n\t\tmarkers = filterImportErrors(model, markers)\n\t\torigSetModelMarkers(model, owner, markers)\n\t}\n}\n\nfunction setupTypescriptCompiler() {\n\t// configure the JSON language support with schemas and schema associations\n\tmonaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n\t\tvalidate: true,\n\t})\n\tconst typescript = monaco.languages.typescript\n\tconst compilerOptions: monaco.languages.typescript.CompilerOptions = {\n\t\tnoEmit: true,\n\t\t// monaco-editor doesn't export \"2021\" as enum: https://github.com/microsoft/monaco-editor/blob/a4b088e410209a27d5729713294800eba0d6b5b3/src/language/typescript/monaco.contribution.ts#L36\n\t\t// but we can rely on https://github.com/microsoft/monaco-editor/blob/main/src/language/typescript/tsWorker.ts#L164.\n\t\t// @ts-expect-error TS(2322): see above\n\t\ttarget: 8,\n\t\tlib: [\"es2021\", \"dom\", \"dom.iterable\"],\n\t\tallowJs: true,\n\t\tallowNonTsExtensions: true,\n\t\tallowImportingTsExtensions: true,\n\t\tallowSyntheticDefaultImports: true,\n\t\talwaysStrict: true,\n\t\tjsx: typescript.JsxEmit.ReactJSX,\n\t\tmoduleResolution: typescript.ModuleResolutionKind.NodeJs,\n\t\tmodule: typescript.ModuleKind.ESNext,\n\t\tresolveJsonModule: true,\n\t\ttypeRoots: [\"node_modules/@types\"],\n\t}\n\ttypescript.typescriptDefaults.setCompilerOptions(compilerOptions)\n\ttypescript.javascriptDefaults.setCompilerOptions(compilerOptions)\n\tconst diagnosticsOptions: monaco.languages.typescript.DiagnosticsOptions = {\n\t\t// Disable low-level suggestions \u2013 as of Monaco 0.20.0, they\u2019re mostly meaningless\n\t\t// in the context of Framer (e.g.: \u201CVariable '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.\u201D)\n\t\t// You can find these suggestions in https://github.com/microsoft/monaco-typescript/blob/master/src/lib/typescriptServices.js\n\t\t// by searching for ts.DiagnosticCategory.Suggestion\n\t\tnoSuggestionDiagnostics: true,\n\t\t// We suppress all import errors (module or types not found) as we are\n\t\t// handling this with custom error handling which is dependant on the\n\t\t// compiler\n\t\tdiagnosticCodesToIgnore: [2307],\n\t}\n\ttypescript.typescriptDefaults.setDiagnosticsOptions(diagnosticsOptions)\n\ttypescript.javascriptDefaults.setDiagnosticsOptions(diagnosticsOptions)\n\ttypescript.typescriptDefaults.setEagerModelSync(true)\n\ttypescript.javascriptDefaults.setEagerModelSync(true)\n}\n\nfunction setupCodeFormatter() {\n\tconst codeFormatter = {\n\t\tasync provideDocumentFormattingEdits(model: monaco.editor.ITextModel) {\n\t\t\ttry {\n\t\t\t\tconst text = await formatCode(model.getValue(), model.getLanguageId())\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\trange: model.getFullModelRange(),\n\t\t\t\t\t\ttext,\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t} catch (e) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t},\n\t}\n\tmonaco.languages.registerDocumentFormattingEditProvider(\"javascript\", codeFormatter)\n\tmonaco.languages.registerDocumentFormattingEditProvider(\"typescript\", codeFormatter)\n\tmonaco.languages.registerDocumentFormattingEditProvider(\"json\", codeFormatter)\n}\nfunction setupExtraLibs() {\n\t// We include src/library/src/asseturl.d.ts here so that it's picked up\n\t// by the code editor. The TSDoc formatting is a little weird but was\n\t// necessary to get Monaco to correctly output the code example without\n\t// including the asterisks.\n\tmonaco.languages.typescript.typescriptDefaults.addExtraLib(\n\t\t`\ndeclare module \"framer/resource\" {\n    /**\n     * A helper function for generating urls to files in the current Framer\n     * project or package. When used from within a code component it will\n     * ensure the path is correct regardless of the render environment.\n     *\n     * \\`\\`\\`\nimport { Frame } from \"framer\"\nimport { url } from \"framer/resource\"\n\nexport function MyComponent() {\n  return <Frame image={url(\"./code/images/background.png\")} size=\"100%\" />\n}\n\\`\\`\\`\n     *\n     * @param src - Takes any number of path segments as arguments and will\n     *              join them together.\n     * @returns An absolute url string.\n     */\n    export function url(...src: string[]): string\n}\n`,\n\t\t\"framer/resource\",\n\t)\n}\n\nfunction installPendingChangesCheck() {\n\taddBeforeUnloadHandler({ check: () => engine.stores.codeEditorStore.hasUnsavedChanges() })\n}\n"],
  "mappings": "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",
  "names": ["RegexSource", "Onigasm", "readBinary", "assert", "module", "err", "ret", "buffer", "exports", "log", "loadWASM", "Rule", "CaptureRule", "RegExpSource", "RegExpSourceList", "MatchRule", "IncludeOnlyRule", "BeginEndRule", "BeginWhileRule", "RuleFactory", "matcher", "ScopeMetadata", "ScopeMetadataProvider", "Grammar", "StackElementMetadata", "ScopeListElement", "StackElement", "LocalStackElement", "LineTokens", "SyncRegistry", "chCode", "tag", "JSONStreamState", "JSONToken", "ParsedThemeRule", "ColorMap", "Theme", "ThemeTrieElementRule", "ThemeTrieElement", "Registry", "_a", "_this", "editor", "i", "wireTmGrammars", "languages", "editor", "meta", "meta", "import_react", "editor", "url", "editor", "editor", "md5", "React", "log", "modelFactory", "editor", "editor", "editor", "import_jsx_runtime", "log", "React"]
}
