1{
2	"information_for_contributors": [
3		"This file has been converted from https://github.com/jeff-hykin/cpp-textmate-grammar/blob/master/syntaxes/cpp.tmLanguage.json",
4		"If you want to provide a fix or improvement, please create a pull request against the original repository.",
5		"Once accepted there, we are happy to receive an update request."
6	],
7	"version": "https://github.com/jeff-hykin/cpp-textmate-grammar/commit/f074a48ae0b7ba313af3faf3d8bfda8537864bd1",
8	"name": "C++",
9	"scopeName": "source.cpp",
10	"patterns": [
11		{
12			"include": "#ever_present_context"
13		},
14		{
15			"include": "#constructor_root"
16		},
17		{
18			"include": "#destructor_root"
19		},
20		{
21			"include": "#function_definition"
22		},
23		{
24			"include": "#operator_overload"
25		},
26		{
27			"include": "#using_namespace"
28		},
29		{
30			"include": "#type_alias"
31		},
32		{
33			"include": "#using_name"
34		},
35		{
36			"include": "#namespace_alias"
37		},
38		{
39			"include": "#namespace_block"
40		},
41		{
42			"include": "#extern_block"
43		},
44		{
45			"include": "#typedef_class"
46		},
47		{
48			"include": "#typedef_struct"
49		},
50		{
51			"include": "#typedef_union"
52		},
53		{
54			"include": "#misc_keywords"
55		},
56		{
57			"include": "#standard_declares"
58		},
59		{
60			"include": "#class_block"
61		},
62		{
63			"include": "#struct_block"
64		},
65		{
66			"include": "#union_block"
67		},
68		{
69			"include": "#enum_block"
70		},
71		{
72			"include": "#template_isolated_definition"
73		},
74		{
75			"include": "#template_definition"
76		},
77		{
78			"include": "#access_control_keywords"
79		},
80		{
81			"include": "#block"
82		},
83		{
84			"include": "#static_assert"
85		},
86		{
87			"include": "#assembly"
88		},
89		{
90			"include": "#function_pointer"
91		},
92		{
93			"include": "#evaluation_context"
94		}
95	],
96	"repository": {
97		"access_control_keywords": {
98			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(((?:(?:protected)|(?:private)|(?:public)))(?:(?:\\s)+)?(:))",
99			"captures": {
100				"1": {
101					"patterns": [
102						{
103							"include": "#inline_comment"
104						}
105					]
106				},
107				"2": {
108					"patterns": [
109						{
110							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
111							"captures": {
112								"1": {
113									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
114								},
115								"2": {
116									"name": "comment.block.cpp"
117								},
118								"3": {
119									"patterns": [
120										{
121											"match": "\\*\\/",
122											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
123										},
124										{
125											"match": "\\*",
126											"name": "comment.block.cpp"
127										}
128									]
129								}
130							}
131						}
132					]
133				},
134				"3": {
135					"name": "storage.type.modifier.access.control.$4.cpp"
136				},
137				"4": {},
138				"5": {
139					"name": "punctuation.separator.colon.access.control.cpp"
140				}
141			}
142		},
143		"alignas_attribute": {
144			"begin": "alignas\\(",
145			"end": "\\)",
146			"beginCaptures": {
147				"0": {
148					"name": "punctuation.section.attribute.begin.cpp"
149				}
150			},
151			"endCaptures": {
152				"0": {
153					"name": "punctuation.section.attribute.end.cpp"
154				}
155			},
156			"name": "support.other.attribute.cpp",
157			"patterns": [
158				{
159					"include": "#attributes_context"
160				},
161				{
162					"begin": "\\(",
163					"end": "\\)",
164					"beginCaptures": {},
165					"endCaptures": {},
166					"patterns": [
167						{
168							"include": "#attributes_context"
169						},
170						{
171							"include": "#string_context"
172						}
173					]
174				},
175				{
176					"match": "(using)(?:\\s)+((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))",
177					"captures": {
178						"1": {
179							"name": "keyword.other.using.directive.cpp"
180						},
181						"2": {
182							"name": "entity.name.namespace.cpp"
183						}
184					}
185				},
186				{
187					"match": ",",
188					"name": "punctuation.separator.attribute.cpp"
189				},
190				{
191					"match": ":",
192					"name": "punctuation.accessor.attribute.cpp"
193				},
194				{
195					"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)(?=::)",
196					"name": "entity.name.namespace.cpp"
197				},
198				{
199					"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
200					"name": "entity.other.attribute.$0.cpp"
201				},
202				{
203					"include": "#number_literal"
204				}
205			]
206		},
207		"alignas_operator": {
208			"begin": "((?<!\\w)alignas(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
209			"end": "\\)",
210			"beginCaptures": {
211				"1": {
212					"name": "keyword.operator.functionlike.cpp keyword.operator.alignas.cpp"
213				},
214				"2": {
215					"patterns": [
216						{
217							"include": "#inline_comment"
218						}
219					]
220				},
221				"3": {
222					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
223				},
224				"4": {
225					"name": "comment.block.cpp"
226				},
227				"5": {
228					"patterns": [
229						{
230							"match": "\\*\\/",
231							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
232						},
233						{
234							"match": "\\*",
235							"name": "comment.block.cpp"
236						}
237					]
238				},
239				"6": {
240					"name": "punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp"
241				}
242			},
243			"endCaptures": {
244				"0": {
245					"name": "punctuation.section.arguments.end.bracket.round.operator.alignas.cpp"
246				}
247			},
248			"contentName": "meta.arguments.operator.alignas",
249			"patterns": [
250				{
251					"include": "#evaluation_context"
252				}
253			]
254		},
255		"alignof_operator": {
256			"begin": "((?<!\\w)alignof(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
257			"end": "\\)",
258			"beginCaptures": {
259				"1": {
260					"name": "keyword.operator.functionlike.cpp keyword.operator.alignof.cpp"
261				},
262				"2": {
263					"patterns": [
264						{
265							"include": "#inline_comment"
266						}
267					]
268				},
269				"3": {
270					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
271				},
272				"4": {
273					"name": "comment.block.cpp"
274				},
275				"5": {
276					"patterns": [
277						{
278							"match": "\\*\\/",
279							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
280						},
281						{
282							"match": "\\*",
283							"name": "comment.block.cpp"
284						}
285					]
286				},
287				"6": {
288					"name": "punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp"
289				}
290			},
291			"endCaptures": {
292				"0": {
293					"name": "punctuation.section.arguments.end.bracket.round.operator.alignof.cpp"
294				}
295			},
296			"contentName": "meta.arguments.operator.alignof",
297			"patterns": [
298				{
299					"include": "#evaluation_context"
300				}
301			]
302		},
303		"assembly": {
304			"begin": "(\\b(?:__asm__|asm)\\b)(?:(?:\\s)+)?((?:volatile)?)",
305			"end": "(?!\\G)",
306			"beginCaptures": {
307				"1": {
308					"name": "storage.type.asm.cpp"
309				},
310				"2": {
311					"name": "storage.modifier.cpp"
312				}
313			},
314			"endCaptures": {},
315			"name": "meta.asm.cpp",
316			"patterns": [
317				{
318					"match": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\n)|$)",
319					"captures": {
320						"1": {
321							"patterns": [
322								{
323									"include": "#inline_comment"
324								}
325							]
326						},
327						"2": {
328							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
329						},
330						"3": {
331							"name": "comment.block.cpp"
332						},
333						"4": {
334							"patterns": [
335								{
336									"match": "\\*\\/",
337									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
338								},
339								{
340									"match": "\\*",
341									"name": "comment.block.cpp"
342								}
343							]
344						}
345					}
346				},
347				{
348					"include": "#comments"
349				},
350				{
351					"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\(",
352					"end": "\\)",
353					"beginCaptures": {
354						"0": {
355							"name": "punctuation.section.parens.begin.bracket.round.assembly.cpp"
356						},
357						"1": {
358							"patterns": [
359								{
360									"include": "#inline_comment"
361								}
362							]
363						},
364						"2": {
365							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
366						},
367						"3": {
368							"name": "comment.block.cpp"
369						},
370						"4": {
371							"patterns": [
372								{
373									"match": "\\*\\/",
374									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
375								},
376								{
377									"match": "\\*",
378									"name": "comment.block.cpp"
379								}
380							]
381						}
382					},
383					"endCaptures": {
384						"0": {
385							"name": "punctuation.section.parens.end.bracket.round.assembly.cpp"
386						}
387					},
388					"patterns": [
389						{
390							"begin": "(R?)(\")",
391							"end": "\"",
392							"beginCaptures": {
393								"1": {
394									"name": "meta.encoding.cpp"
395								},
396								"2": {
397									"name": "punctuation.definition.string.begin.assembly.cpp"
398								}
399							},
400							"endCaptures": {
401								"0": {
402									"name": "punctuation.definition.string.end.assembly.cpp"
403								}
404							},
405							"name": "string.quoted.double.cpp",
406							"contentName": "meta.embedded.assembly",
407							"patterns": [
408								{
409									"include": "source.asm"
410								},
411								{
412									"include": "source.x86"
413								},
414								{
415									"include": "source.x86_64"
416								},
417								{
418									"include": "source.arm"
419								},
420								{
421									"include": "#backslash_escapes"
422								},
423								{
424									"include": "#string_escaped_char"
425								}
426							]
427						},
428						{
429							"begin": "\\(",
430							"end": "\\)",
431							"beginCaptures": {
432								"0": {
433									"name": "punctuation.section.parens.begin.bracket.round.assembly.inner.cpp"
434								}
435							},
436							"endCaptures": {
437								"0": {
438									"name": "punctuation.section.parens.end.bracket.round.assembly.inner.cpp"
439								}
440							},
441							"patterns": [
442								{
443									"include": "#evaluation_context"
444								}
445							]
446						},
447						{
448							"match": "\\[((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]",
449							"captures": {
450								"1": {
451									"patterns": [
452										{
453											"include": "#inline_comment"
454										}
455									]
456								},
457								"2": {
458									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
459								},
460								"3": {
461									"name": "comment.block.cpp"
462								},
463								"4": {
464									"patterns": [
465										{
466											"match": "\\*\\/",
467											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
468										},
469										{
470											"match": "\\*",
471											"name": "comment.block.cpp"
472										}
473									]
474								},
475								"5": {
476									"name": "variable.other.asm.label.cpp"
477								},
478								"6": {
479									"patterns": [
480										{
481											"include": "#inline_comment"
482										}
483									]
484								},
485								"7": {
486									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
487								},
488								"8": {
489									"name": "comment.block.cpp"
490								},
491								"9": {
492									"patterns": [
493										{
494											"match": "\\*\\/",
495											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
496										},
497										{
498											"match": "\\*",
499											"name": "comment.block.cpp"
500										}
501									]
502								}
503							}
504						},
505						{
506							"match": ":",
507							"name": "punctuation.separator.delimiter.colon.assembly.cpp"
508						},
509						{
510							"include": "#comments"
511						}
512					]
513				}
514			]
515		},
516		"assignment_operator": {
517			"match": "\\=",
518			"name": "keyword.operator.assignment.cpp"
519		},
520		"attributes_context": {
521			"patterns": [
522				{
523					"include": "#cpp_attributes"
524				},
525				{
526					"include": "#gcc_attributes"
527				},
528				{
529					"include": "#ms_attributes"
530				},
531				{
532					"include": "#alignas_attribute"
533				}
534			]
535		},
536		"backslash_escapes": {
537			"match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?]   |\n[0-3][0-7]{,2}\t |\n[4-7]\\d?\t\t|\nx[a-fA-F0-9]{,2} |\nu[a-fA-F0-9]{,4} |\nU[a-fA-F0-9]{,8} )",
538			"name": "constant.character.escape"
539		},
540		"block": {
541			"begin": "{",
542			"end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
543			"beginCaptures": {
544				"0": {
545					"name": "punctuation.section.block.begin.bracket.curly.cpp"
546				}
547			},
548			"endCaptures": {
549				"0": {
550					"name": "punctuation.section.block.end.bracket.curly.cpp"
551				}
552			},
553			"name": "meta.block.cpp",
554			"patterns": [
555				{
556					"include": "#function_body_context"
557				}
558			]
559		},
560		"block_comment": {
561			"begin": "\\s*+(\\/\\*)",
562			"end": "\\*\\/",
563			"beginCaptures": {
564				"1": {
565					"name": "punctuation.definition.comment.begin.cpp"
566				}
567			},
568			"endCaptures": {
569				"0": {
570					"name": "punctuation.definition.comment.end.cpp"
571				}
572			},
573			"name": "comment.block.cpp"
574		},
575		"builtin_storage_type_initilizer": {
576			"begin": "(?:\\s)*+(?<!\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:double)|(?:signed)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:long)|(?:char)|(?:bool)|(?:int)))|((?:(?:uint_least32_t)|(?:uint_least64_t)|(?:uint_least16_t)|(?:uint_fast64_t)|(?:uint_least8_t)|(?:int_least64_t)|(?:int_least32_t)|(?:int_least16_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:int_fast8_t)|(?:suseconds_t)|(?:useconds_t)|(?:uintmax_t)|(?:uintmax_t)|(?:in_port_t)|(?:uintmax_t)|(?:in_addr_t)|(?:blksize_t)|(?:uintptr_t)|(?:intmax_t)|(?:intptr_t)|(?:blkcnt_t)|(?:intmax_t)|(?:u_quad_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:ssize_t)|(?:fixpt_t)|(?:qaddr_t)|(?:u_short)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:daddr_t)|(?:caddr_t)|(?:swblk_t)|(?:clock_t)|(?:segsz_t)|(?:nlink_t)|(?:time_t)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:u_char)|(?:int8_t)|(?:u_int)|(?:uid_t)|(?:off_t)|(?:pid_t)|(?:gid_t)|(?:dev_t)|(?:div_t)|(?:key_t)|(?:ino_t)|(?:id_t)|(?:id_t)|(?:uint))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_cond_t)|(?:pthread_attr_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\w)*_t))(?!\\w)(?:\\s)*+(?<!\\w)(\\()",
577			"end": "\\)",
578			"beginCaptures": {
579				"1": {
580					"name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
581				},
582				"2": {
583					"name": "storage.type.cpp storage.type.built-in.cpp"
584				},
585				"3": {
586					"name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
587				},
588				"4": {
589					"name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
590				},
591				"5": {
592					"name": "punctuation.section.arguments.begin.bracket.round.initializer.cpp"
593				}
594			},
595			"endCaptures": {
596				"0": {
597					"name": "punctuation.section.arguments.end.bracket.round.initializer.cpp"
598				}
599			},
600			"patterns": [
601				{
602					"include": "#evaluation_context"
603				}
604			]
605		},
606		"case_statement": {
607			"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)case(?!\\w))",
608			"end": ":",
609			"beginCaptures": {
610				"1": {
611					"patterns": [
612						{
613							"include": "#inline_comment"
614						}
615					]
616				},
617				"2": {
618					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
619				},
620				"3": {
621					"name": "comment.block.cpp"
622				},
623				"4": {
624					"patterns": [
625						{
626							"match": "\\*\\/",
627							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
628						},
629						{
630							"match": "\\*",
631							"name": "comment.block.cpp"
632						}
633					]
634				},
635				"5": {
636					"name": "keyword.control.case.cpp"
637				}
638			},
639			"endCaptures": {
640				"0": {
641					"name": "punctuation.separator.colon.case.cpp"
642				}
643			},
644			"name": "meta.conditional.case.cpp",
645			"patterns": [
646				{
647					"include": "#evaluation_context"
648				},
649				{
650					"include": "#c_conditional_context"
651				}
652			]
653		},
654		"class_block": {
655			"begin": "((?<!\\w)class(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
656			"end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
657			"beginCaptures": {
658				"0": {
659					"name": "meta.head.class.cpp"
660				},
661				"1": {
662					"name": "storage.type.$1.cpp"
663				},
664				"2": {
665					"patterns": [
666						{
667							"include": "#inline_comment"
668						}
669					]
670				},
671				"3": {
672					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
673				},
674				"4": {
675					"name": "comment.block.cpp"
676				},
677				"5": {
678					"patterns": [
679						{
680							"match": "\\*\\/",
681							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
682						},
683						{
684							"match": "\\*",
685							"name": "comment.block.cpp"
686						}
687					]
688				},
689				"6": {
690					"patterns": [
691						{
692							"include": "#attributes_context"
693						},
694						{
695							"include": "#number_literal"
696						}
697					]
698				},
699				"7": {
700					"patterns": [
701						{
702							"include": "#inline_comment"
703						}
704					]
705				},
706				"8": {
707					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
708				},
709				"9": {
710					"name": "comment.block.cpp"
711				},
712				"10": {
713					"patterns": [
714						{
715							"match": "\\*\\/",
716							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
717						},
718						{
719							"match": "\\*",
720							"name": "comment.block.cpp"
721						}
722					]
723				},
724				"11": {
725					"patterns": [
726						{
727							"match": "((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
728							"captures": {
729								"1": {
730									"name": "storage.type.modifier.final.cpp"
731								},
732								"2": {
733									"patterns": [
734										{
735											"include": "#inline_comment"
736										}
737									]
738								},
739								"3": {
740									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
741								},
742								"4": {
743									"name": "comment.block.cpp"
744								},
745								"5": {
746									"patterns": [
747										{
748											"match": "\\*\\/",
749											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
750										},
751										{
752											"match": "\\*",
753											"name": "comment.block.cpp"
754										}
755									]
756								}
757							}
758						},
759						{
760							"match": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
761							"captures": {
762								"1": {
763									"name": "entity.name.type.class.cpp"
764								},
765								"2": {
766									"patterns": [
767										{
768											"include": "#inline_comment"
769										}
770									]
771								},
772								"3": {
773									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
774								},
775								"4": {
776									"name": "comment.block.cpp"
777								},
778								"5": {
779									"patterns": [
780										{
781											"match": "\\*\\/",
782											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
783										},
784										{
785											"match": "\\*",
786											"name": "comment.block.cpp"
787										}
788									]
789								},
790								"6": {
791									"name": "storage.type.modifier.final.cpp"
792								},
793								"7": {
794									"patterns": [
795										{
796											"include": "#inline_comment"
797										}
798									]
799								},
800								"8": {
801									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
802								},
803								"9": {
804									"name": "comment.block.cpp"
805								},
806								"10": {
807									"patterns": [
808										{
809											"match": "\\*\\/",
810											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
811										},
812										{
813											"match": "\\*",
814											"name": "comment.block.cpp"
815										}
816									]
817								}
818							}
819						},
820						{
821							"match": "DLLEXPORT",
822							"name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
823						},
824						{
825							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
826							"name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
827						}
828					]
829				},
830				"12": {
831					"patterns": [
832						{
833							"include": "#inline_comment"
834						}
835					]
836				},
837				"13": {
838					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
839				},
840				"14": {
841					"name": "comment.block.cpp"
842				},
843				"15": {
844					"patterns": [
845						{
846							"match": "\\*\\/",
847							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
848						},
849						{
850							"match": "\\*",
851							"name": "comment.block.cpp"
852						}
853					]
854				},
855				"16": {
856					"patterns": [
857						{
858							"include": "#inline_comment"
859						}
860					]
861				},
862				"17": {
863					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
864				},
865				"18": {
866					"name": "comment.block.cpp"
867				},
868				"19": {
869					"patterns": [
870						{
871							"match": "\\*\\/",
872							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
873						},
874						{
875							"match": "\\*",
876							"name": "comment.block.cpp"
877						}
878					]
879				},
880				"20": {
881					"name": "punctuation.separator.colon.inheritance.cpp"
882				}
883			},
884			"endCaptures": {
885				"1": {
886					"name": "punctuation.terminator.statement.cpp"
887				},
888				"2": {
889					"name": "punctuation.terminator.statement.cpp"
890				}
891			},
892			"name": "meta.block.class.cpp",
893			"patterns": [
894				{
895					"begin": "\\G ?",
896					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
897					"beginCaptures": {},
898					"endCaptures": {
899						"0": {
900							"name": "punctuation.section.block.begin.bracket.curly.class.cpp"
901						}
902					},
903					"name": "meta.head.class.cpp",
904					"patterns": [
905						{
906							"include": "#ever_present_context"
907						},
908						{
909							"include": "#inheritance_context"
910						},
911						{
912							"include": "#template_call_range"
913						}
914					]
915				},
916				{
917					"begin": "(?<=\\{|<%|\\?\\?<)",
918					"end": "\\}|%>|\\?\\?>",
919					"beginCaptures": {},
920					"endCaptures": {
921						"0": {
922							"name": "punctuation.section.block.end.bracket.curly.class.cpp"
923						}
924					},
925					"name": "meta.body.class.cpp",
926					"patterns": [
927						{
928							"include": "#function_pointer"
929						},
930						{
931							"include": "#static_assert"
932						},
933						{
934							"include": "#constructor_inline"
935						},
936						{
937							"include": "#destructor_inline"
938						},
939						{
940							"include": "$self"
941						}
942					]
943				},
944				{
945					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
946					"end": "[\\s]*(?=;)",
947					"beginCaptures": {},
948					"endCaptures": {},
949					"name": "meta.tail.class.cpp",
950					"patterns": [
951						{
952							"include": "$self"
953						}
954					]
955				}
956			]
957		},
958		"class_declare": {
959			"match": "((?<!\\w)class(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
960			"captures": {
961				"1": {
962					"name": "storage.type.class.declare.cpp"
963				},
964				"2": {
965					"patterns": [
966						{
967							"include": "#inline_comment"
968						}
969					]
970				},
971				"3": {
972					"patterns": [
973						{
974							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
975							"captures": {
976								"1": {
977									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
978								},
979								"2": {
980									"name": "comment.block.cpp"
981								},
982								"3": {
983									"patterns": [
984										{
985											"match": "\\*\\/",
986											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
987										},
988										{
989											"match": "\\*",
990											"name": "comment.block.cpp"
991										}
992									]
993								}
994							}
995						}
996					]
997				},
998				"4": {
999					"name": "entity.name.type.class.cpp"
1000				},
1001				"5": {
1002					"patterns": [
1003						{
1004							"match": "\\*",
1005							"name": "storage.modifier.pointer.cpp"
1006						},
1007						{
1008							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
1009							"captures": {
1010								"1": {
1011									"patterns": [
1012										{
1013											"include": "#inline_comment"
1014										}
1015									]
1016								},
1017								"2": {
1018									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1019								},
1020								"3": {
1021									"name": "comment.block.cpp"
1022								},
1023								"4": {
1024									"patterns": [
1025										{
1026											"match": "\\*\\/",
1027											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1028										},
1029										{
1030											"match": "\\*",
1031											"name": "comment.block.cpp"
1032										}
1033									]
1034								}
1035							},
1036							"name": "invalid.illegal.reference-type.cpp"
1037						},
1038						{
1039							"match": "\\&",
1040							"name": "storage.modifier.reference.cpp"
1041						}
1042					]
1043				},
1044				"6": {
1045					"patterns": [
1046						{
1047							"include": "#inline_comment"
1048						}
1049					]
1050				},
1051				"7": {
1052					"patterns": [
1053						{
1054							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
1055							"captures": {
1056								"1": {
1057									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1058								},
1059								"2": {
1060									"name": "comment.block.cpp"
1061								},
1062								"3": {
1063									"patterns": [
1064										{
1065											"match": "\\*\\/",
1066											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1067										},
1068										{
1069											"match": "\\*",
1070											"name": "comment.block.cpp"
1071										}
1072									]
1073								}
1074							}
1075						}
1076					]
1077				},
1078				"8": {
1079					"patterns": [
1080						{
1081							"include": "#inline_comment"
1082						}
1083					]
1084				},
1085				"9": {
1086					"patterns": [
1087						{
1088							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
1089							"captures": {
1090								"1": {
1091									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1092								},
1093								"2": {
1094									"name": "comment.block.cpp"
1095								},
1096								"3": {
1097									"patterns": [
1098										{
1099											"match": "\\*\\/",
1100											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1101										},
1102										{
1103											"match": "\\*",
1104											"name": "comment.block.cpp"
1105										}
1106									]
1107								}
1108							}
1109						}
1110					]
1111				},
1112				"10": {
1113					"patterns": [
1114						{
1115							"include": "#inline_comment"
1116						}
1117					]
1118				},
1119				"11": {
1120					"patterns": [
1121						{
1122							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
1123							"captures": {
1124								"1": {
1125									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1126								},
1127								"2": {
1128									"name": "comment.block.cpp"
1129								},
1130								"3": {
1131									"patterns": [
1132										{
1133											"match": "\\*\\/",
1134											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1135										},
1136										{
1137											"match": "\\*",
1138											"name": "comment.block.cpp"
1139										}
1140									]
1141								}
1142							}
1143						}
1144					]
1145				},
1146				"12": {
1147					"name": "variable.other.object.declare.cpp"
1148				},
1149				"13": {
1150					"patterns": [
1151						{
1152							"include": "#inline_comment"
1153						}
1154					]
1155				},
1156				"14": {
1157					"patterns": [
1158						{
1159							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
1160							"captures": {
1161								"1": {
1162									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1163								},
1164								"2": {
1165									"name": "comment.block.cpp"
1166								},
1167								"3": {
1168									"patterns": [
1169										{
1170											"match": "\\*\\/",
1171											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1172										},
1173										{
1174											"match": "\\*",
1175											"name": "comment.block.cpp"
1176										}
1177									]
1178								}
1179							}
1180						}
1181					]
1182				}
1183			}
1184		},
1185		"comma": {
1186			"match": ",",
1187			"name": "punctuation.separator.delimiter.comma.cpp"
1188		},
1189		"comma_in_template_argument": {
1190			"match": ",",
1191			"name": "punctuation.separator.delimiter.comma.template.argument.cpp"
1192		},
1193		"comments": {
1194			"patterns": [
1195				{
1196					"begin": "^(?:(?:\\s)+)?+(\\/\\/[!\\/]+)",
1197					"end": "(?<=\\n)(?<!\\\\\\n)",
1198					"beginCaptures": {
1199						"1": {
1200							"name": "punctuation.definition.comment.documentation.cpp"
1201						}
1202					},
1203					"endCaptures": {},
1204					"name": "comment.line.double-slash.documentation.cpp",
1205					"patterns": [
1206						{
1207							"include": "#line_continuation_character"
1208						},
1209						{
1210							"match": "(?<=[\\s*!\\/])[\\\\@](?:callergraph|callgraph|else|endif|f\\$|f\\[|f\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\$|\\#|<|>|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?",
1211							"name": "storage.type.class.doxygen.cpp"
1212						},
1213						{
1214							"match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)",
1215							"captures": {
1216								"1": {
1217									"name": "storage.type.class.doxygen.cpp"
1218								},
1219								"2": {
1220									"name": "markup.italic.doxygen.cpp"
1221								}
1222							}
1223						},
1224						{
1225							"match": "((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)",
1226							"captures": {
1227								"1": {
1228									"name": "storage.type.class.doxygen.cpp"
1229								},
1230								"2": {
1231									"name": "markup.bold.doxygen.cpp"
1232								}
1233							}
1234						},
1235						{
1236							"match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)",
1237							"captures": {
1238								"1": {
1239									"name": "storage.type.class.doxygen.cpp"
1240								},
1241								"2": {
1242									"name": "markup.inline.raw.string.cpp"
1243								}
1244							}
1245						},
1246						{
1247							"match": "(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",
1248							"name": "storage.type.class.doxygen.cpp"
1249						},
1250						{
1251							"match": "(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",
1252							"name": "storage.type.class.doxygen.cpp"
1253						},
1254						{
1255							"match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)",
1256							"captures": {
1257								"1": {
1258									"name": "storage.type.class.doxygen.cpp"
1259								},
1260								"2": {
1261									"patterns": [
1262										{
1263											"match": "in|out",
1264											"name": "keyword.other.parameter.direction.$0.cpp"
1265										}
1266									]
1267								},
1268								"3": {
1269									"name": "variable.parameter.cpp"
1270								}
1271							}
1272						},
1273						{
1274							"match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
1275							"name": "storage.type.class.doxygen.cpp"
1276						},
1277						{
1278							"match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
1279							"name": "storage.type.class.doxygen.cpp"
1280						},
1281						{
1282							"match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
1283							"name": "storage.type.class.gtkdoc.cpp"
1284						}
1285					]
1286				},
1287				{
1288					"match": "(\\/\\*[!*]+(?=\\s))(.+)([!*]*\\*\\/)",
1289					"captures": {
1290						"1": {
1291							"name": "punctuation.definition.comment.begin.documentation.cpp"
1292						},
1293						"2": {
1294							"patterns": [
1295								{
1296									"match": "(?<=[\\s*!\\/])[\\\\@](?:callergraph|callgraph|else|endif|f\\$|f\\[|f\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\$|\\#|<|>|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?",
1297									"name": "storage.type.class.doxygen.cpp"
1298								},
1299								{
1300									"match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)",
1301									"captures": {
1302										"1": {
1303											"name": "storage.type.class.doxygen.cpp"
1304										},
1305										"2": {
1306											"name": "markup.italic.doxygen.cpp"
1307										}
1308									}
1309								},
1310								{
1311									"match": "((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)",
1312									"captures": {
1313										"1": {
1314											"name": "storage.type.class.doxygen.cpp"
1315										},
1316										"2": {
1317											"name": "markup.bold.doxygen.cpp"
1318										}
1319									}
1320								},
1321								{
1322									"match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)",
1323									"captures": {
1324										"1": {
1325											"name": "storage.type.class.doxygen.cpp"
1326										},
1327										"2": {
1328											"name": "markup.inline.raw.string.cpp"
1329										}
1330									}
1331								},
1332								{
1333									"match": "(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",
1334									"name": "storage.type.class.doxygen.cpp"
1335								},
1336								{
1337									"match": "(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",
1338									"name": "storage.type.class.doxygen.cpp"
1339								},
1340								{
1341									"match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)",
1342									"captures": {
1343										"1": {
1344											"name": "storage.type.class.doxygen.cpp"
1345										},
1346										"2": {
1347											"patterns": [
1348												{
1349													"match": "in|out",
1350													"name": "keyword.other.parameter.direction.$0.cpp"
1351												}
1352											]
1353										},
1354										"3": {
1355											"name": "variable.parameter.cpp"
1356										}
1357									}
1358								},
1359								{
1360									"match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
1361									"name": "storage.type.class.doxygen.cpp"
1362								},
1363								{
1364									"match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
1365									"name": "storage.type.class.doxygen.cpp"
1366								},
1367								{
1368									"match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
1369									"name": "storage.type.class.gtkdoc.cpp"
1370								}
1371							]
1372						},
1373						"3": {
1374							"name": "punctuation.definition.comment.end.documentation.cpp"
1375						}
1376					},
1377					"name": "comment.block.documentation.cpp"
1378				},
1379				{
1380					"begin": "(?:(?:\\s)+)?+\\/\\*[!*]+(?:(?:(?:\\n)|$)|(?=\\s))",
1381					"end": "[!*]*\\*\\/",
1382					"beginCaptures": {
1383						"0": {
1384							"name": "punctuation.definition.comment.begin.documentation.cpp"
1385						}
1386					},
1387					"endCaptures": {
1388						"0": {
1389							"name": "punctuation.definition.comment.end.documentation.cpp"
1390						}
1391					},
1392					"name": "comment.block.documentation.cpp",
1393					"patterns": [
1394						{
1395							"match": "(?<=[\\s*!\\/])[\\\\@](?:callergraph|callgraph|else|endif|f\\$|f\\[|f\\]|hidecallergraph|hidecallgraph|hiderefby|hiderefs|hideinitializer|htmlinclude|n|nosubgrouping|private|privatesection|protected|protectedsection|public|publicsection|pure|showinitializer|showrefby|showrefs|tableofcontents|\\$|\\#|<|>|%|\"|\\.|=|::|\\||\\-\\-|\\-\\-\\-)\\b(?:\\{[^}]*\\})?",
1396							"name": "storage.type.class.doxygen.cpp"
1397						},
1398						{
1399							"match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))(?:\\s)+(\\S+)",
1400							"captures": {
1401								"1": {
1402									"name": "storage.type.class.doxygen.cpp"
1403								},
1404								"2": {
1405									"name": "markup.italic.doxygen.cpp"
1406								}
1407							}
1408						},
1409						{
1410							"match": "((?<=[\\s*!\\/])[\\\\@]b)(?:\\s)+(\\S+)",
1411							"captures": {
1412								"1": {
1413									"name": "storage.type.class.doxygen.cpp"
1414								},
1415								"2": {
1416									"name": "markup.bold.doxygen.cpp"
1417								}
1418							}
1419						},
1420						{
1421							"match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))(?:\\s)+(\\S+)",
1422							"captures": {
1423								"1": {
1424									"name": "storage.type.class.doxygen.cpp"
1425								},
1426								"2": {
1427									"name": "markup.inline.raw.string.cpp"
1428								}
1429							}
1430						},
1431						{
1432							"match": "(?<=[\\s*!\\/])[\\\\@](?:a|anchor|b|c|cite|copybrief|copydetail|copydoc|def|dir|dontinclude|e|em|emoji|enum|example|extends|file|idlexcept|implements|include|includedoc|includelineno|latexinclude|link|memberof|namespace|p|package|ref|refitem|related|relates|relatedalso|relatesalso|verbinclude)\\b(?:\\{[^}]*\\})?",
1433							"name": "storage.type.class.doxygen.cpp"
1434						},
1435						{
1436							"match": "(?<=[\\s*!\\/])[\\\\@](?:addindex|addtogroup|category|class|defgroup|diafile|dotfile|elseif|fn|headerfile|if|ifnot|image|ingroup|interface|line|mainpage|mscfile|name|overload|page|property|protocol|section|skip|skipline|snippet|snippetdoc|snippetlineno|struct|subpage|subsection|subsubsection|typedef|union|until|vhdlflow|weakgroup)\\b(?:\\{[^}]*\\})?",
1437							"name": "storage.type.class.doxygen.cpp"
1438						},
1439						{
1440							"match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:(?:\\s)+)?(?:in|out)(?:(?:\\s)+)?)+)\\])?(?:\\s)+(\\b\\w+\\b)",
1441							"captures": {
1442								"1": {
1443									"name": "storage.type.class.doxygen.cpp"
1444								},
1445								"2": {
1446									"patterns": [
1447										{
1448											"match": "in|out",
1449											"name": "keyword.other.parameter.direction.$0.cpp"
1450										}
1451									]
1452								},
1453								"3": {
1454									"name": "variable.parameter.cpp"
1455								}
1456							}
1457						},
1458						{
1459							"match": "(?<=[\\s*!\\/])[\\\\@](?:arg|attention|author|authors|brief|bug|copyright|date|deprecated|details|exception|invariant|li|note|par|paragraph|param|post|pre|remark|remarks|result|return|returns|retval|sa|see|short|since|test|throw|throws|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
1460							"name": "storage.type.class.doxygen.cpp"
1461						},
1462						{
1463							"match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|startuml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
1464							"name": "storage.type.class.doxygen.cpp"
1465						},
1466						{
1467							"match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
1468							"name": "storage.type.class.gtkdoc.cpp"
1469						}
1470					]
1471				},
1472				{
1473					"include": "#emacs_file_banner"
1474				},
1475				{
1476					"include": "#block_comment"
1477				},
1478				{
1479					"include": "#line_comment"
1480				},
1481				{
1482					"include": "#invalid_comment_end"
1483				}
1484			]
1485		},
1486		"constructor_inline": {
1487			"begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)(?=\\())",
1488			"end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
1489			"beginCaptures": {
1490				"0": {
1491					"name": "meta.head.function.definition.special.constructor.cpp"
1492				},
1493				"1": {
1494					"patterns": [
1495						{
1496							"include": "#inline_comment"
1497						}
1498					]
1499				},
1500				"2": {
1501					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1502				},
1503				"3": {
1504					"name": "comment.block.cpp"
1505				},
1506				"4": {
1507					"patterns": [
1508						{
1509							"match": "\\*\\/",
1510							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1511						},
1512						{
1513							"match": "\\*",
1514							"name": "comment.block.cpp"
1515						}
1516					]
1517				},
1518				"5": {
1519					"patterns": [
1520						{
1521							"include": "#functional_specifiers_pre_parameters"
1522						}
1523					]
1524				},
1525				"6": {
1526					"patterns": [
1527						{
1528							"include": "#inline_comment"
1529						}
1530					]
1531				},
1532				"7": {
1533					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1534				},
1535				"8": {
1536					"name": "comment.block.cpp"
1537				},
1538				"9": {
1539					"patterns": [
1540						{
1541							"match": "\\*\\/",
1542							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1543						},
1544						{
1545							"match": "\\*",
1546							"name": "comment.block.cpp"
1547						}
1548					]
1549				},
1550				"10": {
1551					"patterns": [
1552						{
1553							"include": "#inline_comment"
1554						}
1555					]
1556				},
1557				"11": {
1558					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1559				},
1560				"12": {
1561					"name": "comment.block.cpp"
1562				},
1563				"13": {
1564					"patterns": [
1565						{
1566							"match": "\\*\\/",
1567							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1568						},
1569						{
1570							"match": "\\*",
1571							"name": "comment.block.cpp"
1572						}
1573					]
1574				},
1575				"14": {
1576					"name": "storage.type.modifier.calling-convention.cpp"
1577				},
1578				"15": {
1579					"patterns": [
1580						{
1581							"include": "#inline_comment"
1582						}
1583					]
1584				},
1585				"16": {
1586					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1587				},
1588				"17": {
1589					"name": "comment.block.cpp"
1590				},
1591				"18": {
1592					"patterns": [
1593						{
1594							"match": "\\*\\/",
1595							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1596						},
1597						{
1598							"match": "\\*",
1599							"name": "comment.block.cpp"
1600						}
1601					]
1602				},
1603				"19": {
1604					"name": "entity.name.function.constructor.cpp entity.name.function.definition.special.constructor.cpp"
1605				}
1606			},
1607			"endCaptures": {},
1608			"name": "meta.function.definition.special.constructor.cpp",
1609			"patterns": [
1610				{
1611					"begin": "\\G ?",
1612					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
1613					"beginCaptures": {},
1614					"endCaptures": {
1615						"0": {
1616							"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
1617						}
1618					},
1619					"name": "meta.head.function.definition.special.constructor.cpp",
1620					"patterns": [
1621						{
1622							"include": "#ever_present_context"
1623						},
1624						{
1625							"match": "(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))",
1626							"captures": {
1627								"1": {
1628									"name": "keyword.operator.assignment.cpp"
1629								},
1630								"2": {
1631									"patterns": [
1632										{
1633											"include": "#inline_comment"
1634										}
1635									]
1636								},
1637								"3": {
1638									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1639								},
1640								"4": {
1641									"name": "comment.block.cpp"
1642								},
1643								"5": {
1644									"patterns": [
1645										{
1646											"match": "\\*\\/",
1647											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1648										},
1649										{
1650											"match": "\\*",
1651											"name": "comment.block.cpp"
1652										}
1653									]
1654								},
1655								"6": {
1656									"name": "keyword.other.default.constructor.cpp"
1657								},
1658								"7": {
1659									"name": "keyword.other.delete.constructor.cpp"
1660								}
1661							}
1662						},
1663						{
1664							"include": "#functional_specifiers_pre_parameters"
1665						},
1666						{
1667							"begin": ":",
1668							"end": "(?=\\{)",
1669							"beginCaptures": {
1670								"0": {
1671									"name": "punctuation.separator.initializers.cpp"
1672								}
1673							},
1674							"endCaptures": {},
1675							"patterns": [
1676								{
1677									"begin": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?(\\()",
1678									"end": "\\)",
1679									"beginCaptures": {
1680										"1": {
1681											"name": "entity.name.function.call.initializer.cpp"
1682										},
1683										"2": {
1684											"name": "meta.template.call.cpp",
1685											"patterns": [
1686												{
1687													"include": "#template_call_range"
1688												}
1689											]
1690										},
1691										"3": {},
1692										"4": {
1693											"name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
1694										}
1695									},
1696									"endCaptures": {
1697										"0": {
1698											"name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
1699										}
1700									},
1701									"contentName": "meta.parameter.initialization",
1702									"patterns": [
1703										{
1704											"include": "#evaluation_context"
1705										}
1706									]
1707								},
1708								{
1709									"begin": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(\\{)",
1710									"end": "\\}",
1711									"beginCaptures": {
1712										"1": {
1713											"name": "entity.name.function.call.initializer.cpp"
1714										},
1715										"2": {
1716											"name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
1717										}
1718									},
1719									"endCaptures": {
1720										"0": {
1721											"name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
1722										}
1723									},
1724									"contentName": "meta.parameter.initialization",
1725									"patterns": [
1726										{
1727											"include": "#evaluation_context"
1728										}
1729									]
1730								},
1731								{
1732									"match": ",",
1733									"name": "punctuation.separator.delimiter.comma.cpp"
1734								},
1735								{
1736									"include": "#comments"
1737								}
1738							]
1739						},
1740						{
1741							"begin": "\\(",
1742							"end": "\\)",
1743							"beginCaptures": {
1744								"0": {
1745									"name": "punctuation.section.parameters.begin.bracket.round.special.constructor.cpp"
1746								}
1747							},
1748							"endCaptures": {
1749								"0": {
1750									"name": "punctuation.section.parameters.end.bracket.round.special.constructor.cpp"
1751								}
1752							},
1753							"contentName": "meta.function.definition.parameters.special.constructor",
1754							"patterns": [
1755								{
1756									"include": "#function_parameter_context"
1757								},
1758								{
1759									"include": "#evaluation_context"
1760								}
1761							]
1762						},
1763						{
1764							"match": "((?:(?:final)|(?:override)))+",
1765							"captures": {
1766								"1": {
1767									"name": "keyword.operator.$1.cpp"
1768								}
1769							}
1770						},
1771						{
1772							"include": "$self"
1773						}
1774					]
1775				},
1776				{
1777					"begin": "(?<=\\{|<%|\\?\\?<)",
1778					"end": "\\}|%>|\\?\\?>",
1779					"beginCaptures": {},
1780					"endCaptures": {
1781						"0": {
1782							"name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
1783						}
1784					},
1785					"name": "meta.body.function.definition.special.constructor.cpp",
1786					"patterns": [
1787						{
1788							"include": "#function_body_context"
1789						}
1790					]
1791				},
1792				{
1793					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
1794					"end": "[\\s]*(?=;)",
1795					"beginCaptures": {},
1796					"endCaptures": {},
1797					"name": "meta.tail.function.definition.special.constructor.cpp",
1798					"patterns": [
1799						{
1800							"include": "$self"
1801						}
1802					]
1803				}
1804			]
1805		},
1806		"constructor_root": {
1807			"begin": "\\s*+((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)(((?>(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))::((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\14((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\())",
1808			"end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
1809			"beginCaptures": {
1810				"0": {
1811					"name": "meta.head.function.definition.special.constructor.cpp"
1812				},
1813				"1": {
1814					"patterns": [
1815						{
1816							"include": "#inline_comment"
1817						}
1818					]
1819				},
1820				"2": {
1821					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1822				},
1823				"3": {
1824					"name": "comment.block.cpp"
1825				},
1826				"4": {
1827					"patterns": [
1828						{
1829							"match": "\\*\\/",
1830							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1831						},
1832						{
1833							"match": "\\*",
1834							"name": "comment.block.cpp"
1835						}
1836					]
1837				},
1838				"5": {
1839					"name": "storage.type.modifier.calling-convention.cpp"
1840				},
1841				"6": {
1842					"patterns": [
1843						{
1844							"include": "#inline_comment"
1845						}
1846					]
1847				},
1848				"7": {
1849					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1850				},
1851				"8": {
1852					"name": "comment.block.cpp"
1853				},
1854				"9": {
1855					"patterns": [
1856						{
1857							"match": "\\*\\/",
1858							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1859						},
1860						{
1861							"match": "\\*",
1862							"name": "comment.block.cpp"
1863						}
1864					]
1865				},
1866				"10": {
1867					"patterns": [
1868						{
1869							"match": "::",
1870							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp"
1871						},
1872						{
1873							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
1874							"name": "entity.name.scope-resolution.constructor.cpp"
1875						},
1876						{
1877							"include": "#template_call_range"
1878						}
1879					]
1880				},
1881				"11": {
1882					"patterns": [
1883						{
1884							"include": "#template_call_range"
1885						}
1886					]
1887				},
1888				"12": {},
1889				"13": {
1890					"patterns": [
1891						{
1892							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?=:)",
1893							"name": "entity.name.type.constructor.cpp"
1894						},
1895						{
1896							"match": "(?<=:)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
1897							"name": "entity.name.function.definition.special.constructor.cpp"
1898						},
1899						{
1900							"match": "::",
1901							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp"
1902						}
1903					]
1904				},
1905				"14": {},
1906				"15": {
1907					"patterns": [
1908						{
1909							"include": "#inline_comment"
1910						}
1911					]
1912				},
1913				"16": {
1914					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1915				},
1916				"17": {
1917					"name": "comment.block.cpp"
1918				},
1919				"18": {
1920					"patterns": [
1921						{
1922							"match": "\\*\\/",
1923							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1924						},
1925						{
1926							"match": "\\*",
1927							"name": "comment.block.cpp"
1928						}
1929					]
1930				},
1931				"19": {
1932					"patterns": [
1933						{
1934							"include": "#inline_comment"
1935						}
1936					]
1937				},
1938				"20": {
1939					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1940				},
1941				"21": {
1942					"name": "comment.block.cpp"
1943				},
1944				"22": {
1945					"patterns": [
1946						{
1947							"match": "\\*\\/",
1948							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1949						},
1950						{
1951							"match": "\\*",
1952							"name": "comment.block.cpp"
1953						}
1954					]
1955				},
1956				"23": {
1957					"patterns": [
1958						{
1959							"include": "#inline_comment"
1960						}
1961					]
1962				},
1963				"24": {
1964					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
1965				},
1966				"25": {
1967					"name": "comment.block.cpp"
1968				},
1969				"26": {
1970					"patterns": [
1971						{
1972							"match": "\\*\\/",
1973							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
1974						},
1975						{
1976							"match": "\\*",
1977							"name": "comment.block.cpp"
1978						}
1979					]
1980				}
1981			},
1982			"endCaptures": {},
1983			"name": "meta.function.definition.special.constructor.cpp",
1984			"patterns": [
1985				{
1986					"begin": "\\G ?",
1987					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
1988					"beginCaptures": {},
1989					"endCaptures": {
1990						"0": {
1991							"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
1992						}
1993					},
1994					"name": "meta.head.function.definition.special.constructor.cpp",
1995					"patterns": [
1996						{
1997							"include": "#ever_present_context"
1998						},
1999						{
2000							"match": "(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))",
2001							"captures": {
2002								"1": {
2003									"name": "keyword.operator.assignment.cpp"
2004								},
2005								"2": {
2006									"patterns": [
2007										{
2008											"include": "#inline_comment"
2009										}
2010									]
2011								},
2012								"3": {
2013									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2014								},
2015								"4": {
2016									"name": "comment.block.cpp"
2017								},
2018								"5": {
2019									"patterns": [
2020										{
2021											"match": "\\*\\/",
2022											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2023										},
2024										{
2025											"match": "\\*",
2026											"name": "comment.block.cpp"
2027										}
2028									]
2029								},
2030								"6": {
2031									"name": "keyword.other.default.constructor.cpp"
2032								},
2033								"7": {
2034									"name": "keyword.other.delete.constructor.cpp"
2035								}
2036							}
2037						},
2038						{
2039							"include": "#functional_specifiers_pre_parameters"
2040						},
2041						{
2042							"begin": ":",
2043							"end": "(?=\\{)",
2044							"beginCaptures": {
2045								"0": {
2046									"name": "punctuation.separator.initializers.cpp"
2047								}
2048							},
2049							"endCaptures": {},
2050							"patterns": [
2051								{
2052									"begin": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?(\\()",
2053									"end": "\\)",
2054									"beginCaptures": {
2055										"1": {
2056											"name": "entity.name.function.call.initializer.cpp"
2057										},
2058										"2": {
2059											"name": "meta.template.call.cpp",
2060											"patterns": [
2061												{
2062													"include": "#template_call_range"
2063												}
2064											]
2065										},
2066										"3": {},
2067										"4": {
2068											"name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
2069										}
2070									},
2071									"endCaptures": {
2072										"0": {
2073											"name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
2074										}
2075									},
2076									"contentName": "meta.parameter.initialization",
2077									"patterns": [
2078										{
2079											"include": "#evaluation_context"
2080										}
2081									]
2082								},
2083								{
2084									"begin": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(\\{)",
2085									"end": "\\}",
2086									"beginCaptures": {
2087										"1": {
2088											"name": "entity.name.function.call.initializer.cpp"
2089										},
2090										"2": {
2091											"name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
2092										}
2093									},
2094									"endCaptures": {
2095										"0": {
2096											"name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
2097										}
2098									},
2099									"contentName": "meta.parameter.initialization",
2100									"patterns": [
2101										{
2102											"include": "#evaluation_context"
2103										}
2104									]
2105								},
2106								{
2107									"match": ",",
2108									"name": "punctuation.separator.delimiter.comma.cpp"
2109								},
2110								{
2111									"include": "#comments"
2112								}
2113							]
2114						},
2115						{
2116							"begin": "\\(",
2117							"end": "\\)",
2118							"beginCaptures": {
2119								"0": {
2120									"name": "punctuation.section.parameters.begin.bracket.round.special.constructor.cpp"
2121								}
2122							},
2123							"endCaptures": {
2124								"0": {
2125									"name": "punctuation.section.parameters.end.bracket.round.special.constructor.cpp"
2126								}
2127							},
2128							"contentName": "meta.function.definition.parameters.special.constructor",
2129							"patterns": [
2130								{
2131									"include": "#function_parameter_context"
2132								},
2133								{
2134									"include": "#evaluation_context"
2135								}
2136							]
2137						},
2138						{
2139							"match": "((?:(?:final)|(?:override)))+",
2140							"captures": {
2141								"1": {
2142									"name": "keyword.operator.$1.cpp"
2143								}
2144							}
2145						},
2146						{
2147							"include": "$self"
2148						}
2149					]
2150				},
2151				{
2152					"begin": "(?<=\\{|<%|\\?\\?<)",
2153					"end": "\\}|%>|\\?\\?>",
2154					"beginCaptures": {},
2155					"endCaptures": {
2156						"0": {
2157							"name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
2158						}
2159					},
2160					"name": "meta.body.function.definition.special.constructor.cpp",
2161					"patterns": [
2162						{
2163							"include": "#function_body_context"
2164						}
2165					]
2166				},
2167				{
2168					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
2169					"end": "[\\s]*(?=;)",
2170					"beginCaptures": {},
2171					"endCaptures": {},
2172					"name": "meta.tail.function.definition.special.constructor.cpp",
2173					"patterns": [
2174						{
2175							"include": "$self"
2176						}
2177					]
2178				}
2179			]
2180		},
2181		"control_flow_keywords": {
2182			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:(?:co_return)|(?:co_yield)|(?:co_await)|(?:continue)|(?:default)|(?:return)|(?:switch)|(?:catch)|(?:while)|(?:throw)|(?:break)|(?:else)|(?:case)|(?:goto)|(?:for)|(?:try)|(?:if)|(?:do))(?!\\w))",
2183			"captures": {
2184				"1": {
2185					"patterns": [
2186						{
2187							"include": "#inline_comment"
2188						}
2189					]
2190				},
2191				"2": {
2192					"patterns": [
2193						{
2194							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
2195							"captures": {
2196								"1": {
2197									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2198								},
2199								"2": {
2200									"name": "comment.block.cpp"
2201								},
2202								"3": {
2203									"patterns": [
2204										{
2205											"match": "\\*\\/",
2206											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2207										},
2208										{
2209											"match": "\\*",
2210											"name": "comment.block.cpp"
2211										}
2212									]
2213								}
2214							}
2215						}
2216					]
2217				},
2218				"3": {
2219					"name": "keyword.control.$3.cpp"
2220				}
2221			}
2222		},
2223		"cpp_attributes": {
2224			"begin": "\\[\\[",
2225			"end": "\\]\\]",
2226			"beginCaptures": {
2227				"0": {
2228					"name": "punctuation.section.attribute.begin.cpp"
2229				}
2230			},
2231			"endCaptures": {
2232				"0": {
2233					"name": "punctuation.section.attribute.end.cpp"
2234				}
2235			},
2236			"name": "support.other.attribute.cpp",
2237			"patterns": [
2238				{
2239					"include": "#attributes_context"
2240				},
2241				{
2242					"begin": "\\(",
2243					"end": "\\)",
2244					"beginCaptures": {},
2245					"endCaptures": {},
2246					"patterns": [
2247						{
2248							"include": "#attributes_context"
2249						},
2250						{
2251							"include": "#string_context"
2252						}
2253					]
2254				},
2255				{
2256					"match": "(using)(?:\\s)+((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))",
2257					"captures": {
2258						"1": {
2259							"name": "keyword.other.using.directive.cpp"
2260						},
2261						"2": {
2262							"name": "entity.name.namespace.cpp"
2263						}
2264					}
2265				},
2266				{
2267					"match": ",",
2268					"name": "punctuation.separator.attribute.cpp"
2269				},
2270				{
2271					"match": ":",
2272					"name": "punctuation.accessor.attribute.cpp"
2273				},
2274				{
2275					"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)(?=::)",
2276					"name": "entity.name.namespace.cpp"
2277				},
2278				{
2279					"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
2280					"name": "entity.other.attribute.$0.cpp"
2281				},
2282				{
2283					"include": "#number_literal"
2284				}
2285			]
2286		},
2287		"curly_initializer": {
2288			"begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)?(?![\\w<:.]))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\{)",
2289			"end": "\\}",
2290			"beginCaptures": {
2291				"1": {
2292					"name": "meta.qualified_type.cpp",
2293					"patterns": [
2294						{
2295							"match": "::",
2296							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
2297						},
2298						{
2299							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
2300							"name": "storage.type.$0.cpp"
2301						},
2302						{
2303							"include": "#attributes_context"
2304						},
2305						{
2306							"include": "#storage_types"
2307						},
2308						{
2309							"include": "#number_literal"
2310						},
2311						{
2312							"include": "#string_context"
2313						},
2314						{
2315							"include": "#comma"
2316						},
2317						{
2318							"include": "#scope_resolution_inner_generated"
2319						},
2320						{
2321							"begin": "<",
2322							"end": ">",
2323							"beginCaptures": {
2324								"0": {
2325									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
2326								}
2327							},
2328							"endCaptures": {
2329								"0": {
2330									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
2331								}
2332							},
2333							"name": "meta.template.call.cpp",
2334							"patterns": [
2335								{
2336									"include": "#template_call_context"
2337								}
2338							]
2339						},
2340						{
2341							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
2342							"name": "entity.name.type.cpp"
2343						}
2344					]
2345				},
2346				"2": {
2347					"patterns": [
2348						{
2349							"include": "#attributes_context"
2350						},
2351						{
2352							"include": "#number_literal"
2353						}
2354					]
2355				},
2356				"3": {
2357					"patterns": [
2358						{
2359							"include": "#inline_comment"
2360						}
2361					]
2362				},
2363				"4": {
2364					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2365				},
2366				"5": {
2367					"name": "comment.block.cpp"
2368				},
2369				"6": {
2370					"patterns": [
2371						{
2372							"match": "\\*\\/",
2373							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2374						},
2375						{
2376							"match": "\\*",
2377							"name": "comment.block.cpp"
2378						}
2379					]
2380				},
2381				"7": {
2382					"patterns": [
2383						{
2384							"include": "#inline_comment"
2385						}
2386					]
2387				},
2388				"8": {
2389					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2390				},
2391				"9": {
2392					"name": "comment.block.cpp"
2393				},
2394				"10": {
2395					"patterns": [
2396						{
2397							"match": "\\*\\/",
2398							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2399						},
2400						{
2401							"match": "\\*",
2402							"name": "comment.block.cpp"
2403						}
2404					]
2405				},
2406				"11": {
2407					"patterns": [
2408						{
2409							"match": "::",
2410							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
2411						},
2412						{
2413							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
2414							"name": "entity.name.scope-resolution.type.cpp"
2415						},
2416						{
2417							"include": "#template_call_range"
2418						}
2419					]
2420				},
2421				"12": {
2422					"patterns": [
2423						{
2424							"include": "#template_call_range"
2425						}
2426					]
2427				},
2428				"13": {},
2429				"14": {
2430					"patterns": [
2431						{
2432							"include": "#inline_comment"
2433						}
2434					]
2435				},
2436				"15": {
2437					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2438				},
2439				"16": {
2440					"name": "comment.block.cpp"
2441				},
2442				"17": {
2443					"patterns": [
2444						{
2445							"match": "\\*\\/",
2446							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2447						},
2448						{
2449							"match": "\\*",
2450							"name": "comment.block.cpp"
2451						}
2452					]
2453				},
2454				"18": {},
2455				"19": {
2456					"patterns": [
2457						{
2458							"include": "#inline_comment"
2459						}
2460					]
2461				},
2462				"20": {
2463					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2464				},
2465				"21": {
2466					"name": "comment.block.cpp"
2467				},
2468				"22": {
2469					"patterns": [
2470						{
2471							"match": "\\*\\/",
2472							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2473						},
2474						{
2475							"match": "\\*",
2476							"name": "comment.block.cpp"
2477						}
2478					]
2479				},
2480				"23": {
2481					"name": "punctuation.section.arguments.begin.bracket.curly.initializer.cpp"
2482				}
2483			},
2484			"endCaptures": {
2485				"0": {
2486					"name": "punctuation.section.arguments.end.bracket.curly.initializer.cpp"
2487				}
2488			},
2489			"name": "meta.initialization.cpp",
2490			"patterns": [
2491				{
2492					"include": "#evaluation_context"
2493				},
2494				{
2495					"include": "#comma"
2496				}
2497			]
2498		},
2499		"d9bc4796b0b_module_import": {
2500			"match": "^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((import))(?:(?:\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/)))|((\\\")[^\\\"]*((?:\\\")?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/))))|(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\.(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;)))))|((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;))))(?:(?:\\s)+)?(;?)",
2501			"captures": {
2502				"1": {
2503					"patterns": [
2504						{
2505							"include": "#inline_comment"
2506						}
2507					]
2508				},
2509				"2": {
2510					"patterns": [
2511						{
2512							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
2513							"captures": {
2514								"1": {
2515									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2516								},
2517								"2": {
2518									"name": "comment.block.cpp"
2519								},
2520								"3": {
2521									"patterns": [
2522										{
2523											"match": "\\*\\/",
2524											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2525										},
2526										{
2527											"match": "\\*",
2528											"name": "comment.block.cpp"
2529										}
2530									]
2531								}
2532							}
2533						}
2534					]
2535				},
2536				"3": {
2537					"name": "keyword.control.directive.import.cpp"
2538				},
2539				"5": {
2540					"name": "string.quoted.other.lt-gt.include.cpp"
2541				},
2542				"6": {
2543					"name": "punctuation.definition.string.begin.cpp"
2544				},
2545				"7": {
2546					"name": "punctuation.definition.string.end.cpp"
2547				},
2548				"8": {
2549					"patterns": [
2550						{
2551							"include": "#inline_comment"
2552						}
2553					]
2554				},
2555				"9": {
2556					"patterns": [
2557						{
2558							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
2559							"captures": {
2560								"1": {
2561									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2562								},
2563								"2": {
2564									"name": "comment.block.cpp"
2565								},
2566								"3": {
2567									"patterns": [
2568										{
2569											"match": "\\*\\/",
2570											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2571										},
2572										{
2573											"match": "\\*",
2574											"name": "comment.block.cpp"
2575										}
2576									]
2577								}
2578							}
2579						}
2580					]
2581				},
2582				"10": {
2583					"name": "string.quoted.double.include.cpp"
2584				},
2585				"11": {
2586					"name": "punctuation.definition.string.begin.cpp"
2587				},
2588				"12": {
2589					"name": "punctuation.definition.string.end.cpp"
2590				},
2591				"13": {
2592					"patterns": [
2593						{
2594							"include": "#inline_comment"
2595						}
2596					]
2597				},
2598				"14": {
2599					"patterns": [
2600						{
2601							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
2602							"captures": {
2603								"1": {
2604									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2605								},
2606								"2": {
2607									"name": "comment.block.cpp"
2608								},
2609								"3": {
2610									"patterns": [
2611										{
2612											"match": "\\*\\/",
2613											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2614										},
2615										{
2616											"match": "\\*",
2617											"name": "comment.block.cpp"
2618										}
2619									]
2620								}
2621							}
2622						}
2623					]
2624				},
2625				"15": {
2626					"name": "entity.name.other.preprocessor.macro.include.cpp"
2627				},
2628				"16": {
2629					"patterns": [
2630						{
2631							"include": "#inline_comment"
2632						}
2633					]
2634				},
2635				"17": {
2636					"patterns": [
2637						{
2638							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
2639							"captures": {
2640								"1": {
2641									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2642								},
2643								"2": {
2644									"name": "comment.block.cpp"
2645								},
2646								"3": {
2647									"patterns": [
2648										{
2649											"match": "\\*\\/",
2650											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2651										},
2652										{
2653											"match": "\\*",
2654											"name": "comment.block.cpp"
2655										}
2656									]
2657								}
2658							}
2659						}
2660					]
2661				},
2662				"18": {
2663					"patterns": [
2664						{
2665							"include": "#inline_comment"
2666						}
2667					]
2668				},
2669				"19": {
2670					"patterns": [
2671						{
2672							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
2673							"captures": {
2674								"1": {
2675									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2676								},
2677								"2": {
2678									"name": "comment.block.cpp"
2679								},
2680								"3": {
2681									"patterns": [
2682										{
2683											"match": "\\*\\/",
2684											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2685										},
2686										{
2687											"match": "\\*",
2688											"name": "comment.block.cpp"
2689										}
2690									]
2691								}
2692							}
2693						}
2694					]
2695				},
2696				"20": {
2697					"patterns": [
2698						{
2699							"include": "#inline_comment"
2700						}
2701					]
2702				},
2703				"21": {
2704					"patterns": [
2705						{
2706							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
2707							"captures": {
2708								"1": {
2709									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
2710								},
2711								"2": {
2712									"name": "comment.block.cpp"
2713								},
2714								"3": {
2715									"patterns": [
2716										{
2717											"match": "\\*\\/",
2718											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
2719										},
2720										{
2721											"match": "\\*",
2722											"name": "comment.block.cpp"
2723										}
2724									]
2725								}
2726							}
2727						}
2728					]
2729				},
2730				"22": {
2731					"name": "punctuation.terminator.statement.cpp"
2732				}
2733			},
2734			"name": "meta.preprocessor.import.cpp"
2735		},
2736		"d9bc4796b0b_preprocessor_number_literal": {
2737			"match": "(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])*",
2738			"captures": {
2739				"0": {
2740					"patterns": [
2741						{
2742							"begin": "(?=.)",
2743							"end": "$",
2744							"beginCaptures": {},
2745							"endCaptures": {},
2746							"patterns": [
2747								{
2748									"match": "(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([pP])((?:\\+)?)((?:\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\w))?$",
2749									"captures": {
2750										"1": {
2751											"name": "keyword.other.unit.hexadecimal.cpp"
2752										},
2753										"2": {
2754											"name": "constant.numeric.hexadecimal.cpp",
2755											"patterns": [
2756												{
2757													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2758													"name": "punctuation.separator.constant.numeric.cpp"
2759												}
2760											]
2761										},
2762										"3": {
2763											"name": "punctuation.separator.constant.numeric.cpp"
2764										},
2765										"4": {
2766											"name": "constant.numeric.hexadecimal.cpp"
2767										},
2768										"5": {
2769											"name": "constant.numeric.hexadecimal.cpp",
2770											"patterns": [
2771												{
2772													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2773													"name": "punctuation.separator.constant.numeric.cpp"
2774												}
2775											]
2776										},
2777										"6": {
2778											"name": "punctuation.separator.constant.numeric.cpp"
2779										},
2780										"7": {
2781											"name": "keyword.other.unit.exponent.hexadecimal.cpp"
2782										},
2783										"8": {
2784											"name": "keyword.operator.plus.exponent.hexadecimal.cpp"
2785										},
2786										"9": {
2787											"name": "keyword.operator.minus.exponent.hexadecimal.cpp"
2788										},
2789										"10": {
2790											"name": "constant.numeric.exponent.hexadecimal.cpp",
2791											"patterns": [
2792												{
2793													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2794													"name": "punctuation.separator.constant.numeric.cpp"
2795												}
2796											]
2797										},
2798										"11": {
2799											"name": "keyword.other.unit.suffix.floating-point.cpp"
2800										}
2801									}
2802								},
2803								{
2804									"match": "\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\.|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([eE])((?:\\+)?)((?:\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\w))?$",
2805									"captures": {
2806										"1": {
2807											"name": "constant.numeric.decimal.cpp",
2808											"patterns": [
2809												{
2810													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2811													"name": "punctuation.separator.constant.numeric.cpp"
2812												}
2813											]
2814										},
2815										"2": {
2816											"name": "punctuation.separator.constant.numeric.cpp"
2817										},
2818										"3": {
2819											"name": "constant.numeric.decimal.point.cpp"
2820										},
2821										"4": {
2822											"name": "constant.numeric.decimal.cpp",
2823											"patterns": [
2824												{
2825													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2826													"name": "punctuation.separator.constant.numeric.cpp"
2827												}
2828											]
2829										},
2830										"5": {
2831											"name": "punctuation.separator.constant.numeric.cpp"
2832										},
2833										"6": {
2834											"name": "keyword.other.unit.exponent.decimal.cpp"
2835										},
2836										"7": {
2837											"name": "keyword.operator.plus.exponent.decimal.cpp"
2838										},
2839										"8": {
2840											"name": "keyword.operator.minus.exponent.decimal.cpp"
2841										},
2842										"9": {
2843											"name": "constant.numeric.exponent.decimal.cpp",
2844											"patterns": [
2845												{
2846													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2847													"name": "punctuation.separator.constant.numeric.cpp"
2848												}
2849											]
2850										},
2851										"10": {
2852											"name": "keyword.other.unit.suffix.floating-point.cpp"
2853										}
2854									}
2855								},
2856								{
2857									"match": "(\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?$",
2858									"captures": {
2859										"1": {
2860											"name": "keyword.other.unit.binary.cpp"
2861										},
2862										"2": {
2863											"name": "constant.numeric.binary.cpp",
2864											"patterns": [
2865												{
2866													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2867													"name": "punctuation.separator.constant.numeric.cpp"
2868												}
2869											]
2870										},
2871										"3": {
2872											"name": "punctuation.separator.constant.numeric.cpp"
2873										},
2874										"4": {
2875											"name": "keyword.other.unit.suffix.integer.cpp"
2876										}
2877									}
2878								},
2879								{
2880									"match": "(\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?$",
2881									"captures": {
2882										"1": {
2883											"name": "keyword.other.unit.octal.cpp"
2884										},
2885										"2": {
2886											"name": "constant.numeric.octal.cpp",
2887											"patterns": [
2888												{
2889													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2890													"name": "punctuation.separator.constant.numeric.cpp"
2891												}
2892											]
2893										},
2894										"3": {
2895											"name": "punctuation.separator.constant.numeric.cpp"
2896										},
2897										"4": {
2898											"name": "keyword.other.unit.suffix.integer.cpp"
2899										}
2900									}
2901								},
2902								{
2903									"match": "(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([pP])((?:\\+)?)((?:\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?$",
2904									"captures": {
2905										"1": {
2906											"name": "keyword.other.unit.hexadecimal.cpp"
2907										},
2908										"2": {
2909											"name": "constant.numeric.hexadecimal.cpp",
2910											"patterns": [
2911												{
2912													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2913													"name": "punctuation.separator.constant.numeric.cpp"
2914												}
2915											]
2916										},
2917										"3": {
2918											"name": "punctuation.separator.constant.numeric.cpp"
2919										},
2920										"4": {
2921											"name": "keyword.other.unit.exponent.hexadecimal.cpp"
2922										},
2923										"5": {
2924											"name": "keyword.operator.plus.exponent.hexadecimal.cpp"
2925										},
2926										"6": {
2927											"name": "keyword.operator.minus.exponent.hexadecimal.cpp"
2928										},
2929										"7": {
2930											"name": "constant.numeric.exponent.hexadecimal.cpp",
2931											"patterns": [
2932												{
2933													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2934													"name": "punctuation.separator.constant.numeric.cpp"
2935												}
2936											]
2937										},
2938										"8": {
2939											"name": "keyword.other.unit.suffix.integer.cpp"
2940										}
2941									}
2942								},
2943								{
2944									"match": "\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([eE])((?:\\+)?)((?:\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?$",
2945									"captures": {
2946										"1": {
2947											"name": "constant.numeric.decimal.cpp",
2948											"patterns": [
2949												{
2950													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2951													"name": "punctuation.separator.constant.numeric.cpp"
2952												}
2953											]
2954										},
2955										"2": {
2956											"name": "punctuation.separator.constant.numeric.cpp"
2957										},
2958										"3": {
2959											"name": "keyword.other.unit.exponent.decimal.cpp"
2960										},
2961										"4": {
2962											"name": "keyword.operator.plus.exponent.decimal.cpp"
2963										},
2964										"5": {
2965											"name": "keyword.operator.minus.exponent.decimal.cpp"
2966										},
2967										"6": {
2968											"name": "constant.numeric.exponent.decimal.cpp",
2969											"patterns": [
2970												{
2971													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
2972													"name": "punctuation.separator.constant.numeric.cpp"
2973												}
2974											]
2975										},
2976										"7": {
2977											"name": "keyword.other.unit.suffix.integer.cpp"
2978										}
2979									}
2980								},
2981								{
2982									"match": "(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])+",
2983									"name": "invalid.illegal.constant.numeric.cpp"
2984								}
2985							]
2986						}
2987					]
2988				}
2989			}
2990		},
2991		"decltype": {
2992			"begin": "((?<!\\w)decltype(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
2993			"end": "\\)",
2994			"beginCaptures": {
2995				"1": {
2996					"name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
2997				},
2998				"2": {
2999					"patterns": [
3000						{
3001							"include": "#inline_comment"
3002						}
3003					]
3004				},
3005				"3": {
3006					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3007				},
3008				"4": {
3009					"name": "comment.block.cpp"
3010				},
3011				"5": {
3012					"patterns": [
3013						{
3014							"match": "\\*\\/",
3015							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3016						},
3017						{
3018							"match": "\\*",
3019							"name": "comment.block.cpp"
3020						}
3021					]
3022				},
3023				"6": {
3024					"name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
3025				}
3026			},
3027			"endCaptures": {
3028				"0": {
3029					"name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
3030				}
3031			},
3032			"contentName": "meta.arguments.decltype",
3033			"patterns": [
3034				{
3035					"include": "#evaluation_context"
3036				}
3037			]
3038		},
3039		"decltype_specifier": {
3040			"begin": "((?<!\\w)decltype(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
3041			"end": "\\)",
3042			"beginCaptures": {
3043				"1": {
3044					"name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
3045				},
3046				"2": {
3047					"patterns": [
3048						{
3049							"include": "#inline_comment"
3050						}
3051					]
3052				},
3053				"3": {
3054					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3055				},
3056				"4": {
3057					"name": "comment.block.cpp"
3058				},
3059				"5": {
3060					"patterns": [
3061						{
3062							"match": "\\*\\/",
3063							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3064						},
3065						{
3066							"match": "\\*",
3067							"name": "comment.block.cpp"
3068						}
3069					]
3070				},
3071				"6": {
3072					"name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
3073				}
3074			},
3075			"endCaptures": {
3076				"0": {
3077					"name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
3078				}
3079			},
3080			"contentName": "meta.arguments.decltype",
3081			"patterns": [
3082				{
3083					"include": "#evaluation_context"
3084				}
3085			]
3086		},
3087		"default_statement": {
3088			"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)default(?!\\w))",
3089			"end": ":",
3090			"beginCaptures": {
3091				"1": {
3092					"patterns": [
3093						{
3094							"include": "#inline_comment"
3095						}
3096					]
3097				},
3098				"2": {
3099					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3100				},
3101				"3": {
3102					"name": "comment.block.cpp"
3103				},
3104				"4": {
3105					"patterns": [
3106						{
3107							"match": "\\*\\/",
3108							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3109						},
3110						{
3111							"match": "\\*",
3112							"name": "comment.block.cpp"
3113						}
3114					]
3115				},
3116				"5": {
3117					"name": "keyword.control.default.cpp"
3118				}
3119			},
3120			"endCaptures": {
3121				"0": {
3122					"name": "punctuation.separator.colon.case.default.cpp"
3123				}
3124			},
3125			"name": "meta.conditional.case.cpp",
3126			"patterns": [
3127				{
3128					"include": "#evaluation_context"
3129				},
3130				{
3131					"include": "#c_conditional_context"
3132				}
3133			]
3134		},
3135		"destructor_inline": {
3136			"begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)(~(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)(?=\\())",
3137			"end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
3138			"beginCaptures": {
3139				"0": {
3140					"name": "meta.head.function.definition.special.member.destructor.cpp"
3141				},
3142				"1": {
3143					"patterns": [
3144						{
3145							"include": "#inline_comment"
3146						}
3147					]
3148				},
3149				"2": {
3150					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3151				},
3152				"3": {
3153					"name": "comment.block.cpp"
3154				},
3155				"4": {
3156					"patterns": [
3157						{
3158							"match": "\\*\\/",
3159							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3160						},
3161						{
3162							"match": "\\*",
3163							"name": "comment.block.cpp"
3164						}
3165					]
3166				},
3167				"5": {
3168					"patterns": [
3169						{
3170							"include": "#inline_comment"
3171						}
3172					]
3173				},
3174				"6": {
3175					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3176				},
3177				"7": {
3178					"name": "comment.block.cpp"
3179				},
3180				"8": {
3181					"patterns": [
3182						{
3183							"match": "\\*\\/",
3184							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3185						},
3186						{
3187							"match": "\\*",
3188							"name": "comment.block.cpp"
3189						}
3190					]
3191				},
3192				"9": {
3193					"name": "storage.type.modifier.calling-convention.cpp"
3194				},
3195				"10": {
3196					"patterns": [
3197						{
3198							"include": "#inline_comment"
3199						}
3200					]
3201				},
3202				"11": {
3203					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3204				},
3205				"12": {
3206					"name": "comment.block.cpp"
3207				},
3208				"13": {
3209					"patterns": [
3210						{
3211							"match": "\\*\\/",
3212							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3213						},
3214						{
3215							"match": "\\*",
3216							"name": "comment.block.cpp"
3217						}
3218					]
3219				},
3220				"14": {
3221					"patterns": [
3222						{
3223							"include": "#functional_specifiers_pre_parameters"
3224						}
3225					]
3226				},
3227				"15": {
3228					"patterns": [
3229						{
3230							"include": "#inline_comment"
3231						}
3232					]
3233				},
3234				"16": {
3235					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3236				},
3237				"17": {
3238					"name": "comment.block.cpp"
3239				},
3240				"18": {
3241					"patterns": [
3242						{
3243							"match": "\\*\\/",
3244							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3245						},
3246						{
3247							"match": "\\*",
3248							"name": "comment.block.cpp"
3249						}
3250					]
3251				},
3252				"19": {
3253					"name": "entity.name.function.destructor.cpp entity.name.function.definition.special.member.destructor.cpp"
3254				}
3255			},
3256			"endCaptures": {},
3257			"name": "meta.function.definition.special.member.destructor.cpp",
3258			"patterns": [
3259				{
3260					"begin": "\\G ?",
3261					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
3262					"beginCaptures": {},
3263					"endCaptures": {
3264						"0": {
3265							"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
3266						}
3267					},
3268					"name": "meta.head.function.definition.special.member.destructor.cpp",
3269					"patterns": [
3270						{
3271							"include": "#ever_present_context"
3272						},
3273						{
3274							"match": "(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))",
3275							"captures": {
3276								"1": {
3277									"name": "keyword.operator.assignment.cpp"
3278								},
3279								"2": {
3280									"patterns": [
3281										{
3282											"include": "#inline_comment"
3283										}
3284									]
3285								},
3286								"3": {
3287									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3288								},
3289								"4": {
3290									"name": "comment.block.cpp"
3291								},
3292								"5": {
3293									"patterns": [
3294										{
3295											"match": "\\*\\/",
3296											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3297										},
3298										{
3299											"match": "\\*",
3300											"name": "comment.block.cpp"
3301										}
3302									]
3303								},
3304								"6": {
3305									"name": "keyword.other.default.constructor.cpp"
3306								},
3307								"7": {
3308									"name": "keyword.other.delete.constructor.cpp"
3309								}
3310							}
3311						},
3312						{
3313							"begin": "\\(",
3314							"end": "\\)",
3315							"beginCaptures": {
3316								"0": {
3317									"name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
3318								}
3319							},
3320							"endCaptures": {
3321								"0": {
3322									"name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
3323								}
3324							},
3325							"contentName": "meta.function.definition.parameters.special.member.destructor",
3326							"patterns": []
3327						},
3328						{
3329							"match": "((?:(?:final)|(?:override)))+",
3330							"captures": {
3331								"1": {
3332									"name": "keyword.operator.wordlike.cpp keyword.operator.$1.cpp"
3333								}
3334							}
3335						},
3336						{
3337							"include": "$self"
3338						}
3339					]
3340				},
3341				{
3342					"begin": "(?<=\\{|<%|\\?\\?<)",
3343					"end": "\\}|%>|\\?\\?>",
3344					"beginCaptures": {},
3345					"endCaptures": {
3346						"0": {
3347							"name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
3348						}
3349					},
3350					"name": "meta.body.function.definition.special.member.destructor.cpp",
3351					"patterns": [
3352						{
3353							"include": "#function_body_context"
3354						}
3355					]
3356				},
3357				{
3358					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
3359					"end": "[\\s]*(?=;)",
3360					"beginCaptures": {},
3361					"endCaptures": {},
3362					"name": "meta.tail.function.definition.special.member.destructor.cpp",
3363					"patterns": [
3364						{
3365							"include": "$self"
3366						}
3367					]
3368				}
3369			]
3370		},
3371		"destructor_root": {
3372			"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)(((?>(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))::((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))~\\14((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\())",
3373			"end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
3374			"beginCaptures": {
3375				"0": {
3376					"name": "meta.head.function.definition.special.member.destructor.cpp"
3377				},
3378				"1": {
3379					"patterns": [
3380						{
3381							"include": "#inline_comment"
3382						}
3383					]
3384				},
3385				"2": {
3386					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3387				},
3388				"3": {
3389					"name": "comment.block.cpp"
3390				},
3391				"4": {
3392					"patterns": [
3393						{
3394							"match": "\\*\\/",
3395							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3396						},
3397						{
3398							"match": "\\*",
3399							"name": "comment.block.cpp"
3400						}
3401					]
3402				},
3403				"5": {
3404					"name": "storage.type.modifier.calling-convention.cpp"
3405				},
3406				"6": {
3407					"patterns": [
3408						{
3409							"include": "#inline_comment"
3410						}
3411					]
3412				},
3413				"7": {
3414					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3415				},
3416				"8": {
3417					"name": "comment.block.cpp"
3418				},
3419				"9": {
3420					"patterns": [
3421						{
3422							"match": "\\*\\/",
3423							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3424						},
3425						{
3426							"match": "\\*",
3427							"name": "comment.block.cpp"
3428						}
3429					]
3430				},
3431				"10": {
3432					"patterns": [
3433						{
3434							"match": "::",
3435							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp"
3436						},
3437						{
3438							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
3439							"name": "entity.name.scope-resolution.destructor.cpp"
3440						},
3441						{
3442							"include": "#template_call_range"
3443						}
3444					]
3445				},
3446				"11": {
3447					"patterns": [
3448						{
3449							"include": "#template_call_range"
3450						}
3451					]
3452				},
3453				"12": {},
3454				"13": {
3455					"patterns": [
3456						{
3457							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?=:)",
3458							"name": "entity.name.type.destructor.cpp"
3459						},
3460						{
3461							"match": "(?<=:)~(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
3462							"name": "entity.name.function.definition.special.member.destructor.cpp"
3463						},
3464						{
3465							"match": "::",
3466							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp"
3467						}
3468					]
3469				},
3470				"14": {},
3471				"15": {
3472					"patterns": [
3473						{
3474							"include": "#inline_comment"
3475						}
3476					]
3477				},
3478				"16": {
3479					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3480				},
3481				"17": {
3482					"name": "comment.block.cpp"
3483				},
3484				"18": {
3485					"patterns": [
3486						{
3487							"match": "\\*\\/",
3488							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3489						},
3490						{
3491							"match": "\\*",
3492							"name": "comment.block.cpp"
3493						}
3494					]
3495				},
3496				"19": {
3497					"patterns": [
3498						{
3499							"include": "#inline_comment"
3500						}
3501					]
3502				},
3503				"20": {
3504					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3505				},
3506				"21": {
3507					"name": "comment.block.cpp"
3508				},
3509				"22": {
3510					"patterns": [
3511						{
3512							"match": "\\*\\/",
3513							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3514						},
3515						{
3516							"match": "\\*",
3517							"name": "comment.block.cpp"
3518						}
3519					]
3520				},
3521				"23": {
3522					"patterns": [
3523						{
3524							"include": "#inline_comment"
3525						}
3526					]
3527				},
3528				"24": {
3529					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3530				},
3531				"25": {
3532					"name": "comment.block.cpp"
3533				},
3534				"26": {
3535					"patterns": [
3536						{
3537							"match": "\\*\\/",
3538							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3539						},
3540						{
3541							"match": "\\*",
3542							"name": "comment.block.cpp"
3543						}
3544					]
3545				}
3546			},
3547			"endCaptures": {},
3548			"name": "meta.function.definition.special.member.destructor.cpp",
3549			"patterns": [
3550				{
3551					"begin": "\\G ?",
3552					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
3553					"beginCaptures": {},
3554					"endCaptures": {
3555						"0": {
3556							"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
3557						}
3558					},
3559					"name": "meta.head.function.definition.special.member.destructor.cpp",
3560					"patterns": [
3561						{
3562							"include": "#ever_present_context"
3563						},
3564						{
3565							"match": "(\\=)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(default)|(delete))",
3566							"captures": {
3567								"1": {
3568									"name": "keyword.operator.assignment.cpp"
3569								},
3570								"2": {
3571									"patterns": [
3572										{
3573											"include": "#inline_comment"
3574										}
3575									]
3576								},
3577								"3": {
3578									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3579								},
3580								"4": {
3581									"name": "comment.block.cpp"
3582								},
3583								"5": {
3584									"patterns": [
3585										{
3586											"match": "\\*\\/",
3587											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3588										},
3589										{
3590											"match": "\\*",
3591											"name": "comment.block.cpp"
3592										}
3593									]
3594								},
3595								"6": {
3596									"name": "keyword.other.default.constructor.cpp"
3597								},
3598								"7": {
3599									"name": "keyword.other.delete.constructor.cpp"
3600								}
3601							}
3602						},
3603						{
3604							"begin": "\\(",
3605							"end": "\\)",
3606							"beginCaptures": {
3607								"0": {
3608									"name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
3609								}
3610							},
3611							"endCaptures": {
3612								"0": {
3613									"name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
3614								}
3615							},
3616							"contentName": "meta.function.definition.parameters.special.member.destructor",
3617							"patterns": []
3618						},
3619						{
3620							"match": "((?:(?:final)|(?:override)))+",
3621							"captures": {
3622								"1": {
3623									"name": "keyword.operator.wordlike.cpp keyword.operator.$1.cpp"
3624								}
3625							}
3626						},
3627						{
3628							"include": "$self"
3629						}
3630					]
3631				},
3632				{
3633					"begin": "(?<=\\{|<%|\\?\\?<)",
3634					"end": "\\}|%>|\\?\\?>",
3635					"beginCaptures": {},
3636					"endCaptures": {
3637						"0": {
3638							"name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
3639						}
3640					},
3641					"name": "meta.body.function.definition.special.member.destructor.cpp",
3642					"patterns": [
3643						{
3644							"include": "#function_body_context"
3645						}
3646					]
3647				},
3648				{
3649					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
3650					"end": "[\\s]*(?=;)",
3651					"beginCaptures": {},
3652					"endCaptures": {},
3653					"name": "meta.tail.function.definition.special.member.destructor.cpp",
3654					"patterns": [
3655						{
3656							"include": "$self"
3657						}
3658					]
3659				}
3660			]
3661		},
3662		"diagnostic": {
3663			"begin": "(^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?:error|warning)))\\b(?:(?:\\s)+)?",
3664			"end": "(?<!\\\\)(?=\\n)",
3665			"beginCaptures": {
3666				"1": {
3667					"name": "keyword.control.directive.diagnostic.$7.cpp"
3668				},
3669				"2": {
3670					"patterns": [
3671						{
3672							"include": "#inline_comment"
3673						}
3674					]
3675				},
3676				"3": {
3677					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3678				},
3679				"4": {
3680					"name": "comment.block.cpp"
3681				},
3682				"5": {
3683					"patterns": [
3684						{
3685							"match": "\\*\\/",
3686							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3687						},
3688						{
3689							"match": "\\*",
3690							"name": "comment.block.cpp"
3691						}
3692					]
3693				},
3694				"6": {
3695					"name": "punctuation.definition.directive.cpp"
3696				},
3697				"7": {}
3698			},
3699			"endCaptures": {},
3700			"name": "meta.preprocessor.diagnostic.$reference(directive).cpp",
3701			"patterns": [
3702				{
3703					"begin": "\"",
3704					"end": "(?:(\")|(?<!\\\\)(?=\\n))",
3705					"beginCaptures": {
3706						"0": {
3707							"name": "punctuation.definition.string.begin.cpp"
3708						}
3709					},
3710					"endCaptures": {
3711						"1": {
3712							"name": "punctuation.definition.string.end.cpp"
3713						}
3714					},
3715					"name": "string.quoted.double.cpp",
3716					"patterns": [
3717						{
3718							"include": "#line_continuation_character"
3719						}
3720					]
3721				},
3722				{
3723					"begin": "'",
3724					"end": "(?:(')|(?<!\\\\)(?=\\n))",
3725					"beginCaptures": {
3726						"0": {
3727							"name": "punctuation.definition.string.begin.cpp"
3728						}
3729					},
3730					"endCaptures": {
3731						"1": {
3732							"name": "punctuation.definition.string.end.cpp"
3733						}
3734					},
3735					"name": "string.quoted.single.cpp",
3736					"patterns": [
3737						{
3738							"include": "#line_continuation_character"
3739						}
3740					]
3741				},
3742				{
3743					"begin": "[^'\"]",
3744					"end": "(?<!\\\\)(?=\\n)",
3745					"beginCaptures": {},
3746					"endCaptures": {},
3747					"name": "string.unquoted.cpp",
3748					"patterns": [
3749						{
3750							"include": "#line_continuation_character"
3751						},
3752						{
3753							"include": "#comments"
3754						}
3755					]
3756				}
3757			]
3758		},
3759		"emacs_file_banner": {
3760			"match": "(?:(^(?:(?:\\s)+)?((\\/\\/)(?:(?:\\s)+)?((?:[#;\\/=*C~]+)++(?![#;\\/=*C~]))(?:(?:\\s)+)?.+(?:(?:\\s)+)?\\4(?:(?:\\s)+)?(?:\\n|$)))|(^(?:(?:\\s)+)?((\\/\\*)(?:(?:\\s)+)?((?:[#;\\/=*C~]+)++(?![#;\\/=*C~]))(?:(?:\\s)+)?.+(?:(?:\\s)+)?\\8(?:(?:\\s)+)?\\*\\/)))",
3761			"captures": {
3762				"1": {
3763					"name": "meta.toc-list.banner.double-slash.cpp"
3764				},
3765				"2": {
3766					"name": "comment.line.double-slash.cpp"
3767				},
3768				"3": {
3769					"name": "punctuation.definition.comment.cpp"
3770				},
3771				"4": {
3772					"name": "meta.banner.character.cpp"
3773				},
3774				"5": {
3775					"name": "meta.toc-list.banner.block.cpp"
3776				},
3777				"6": {
3778					"name": "comment.line.banner.cpp"
3779				},
3780				"7": {
3781					"name": "punctuation.definition.comment.cpp"
3782				},
3783				"8": {
3784					"name": "meta.banner.character.cpp"
3785				}
3786			}
3787		},
3788		"empty_square_brackets": {
3789			"name": "storage.modifier.array.bracket.square",
3790			"match": "(?<!delete)\\[(?:(?:\\s)+)?\\]"
3791		},
3792		"enum_block": {
3793			"begin": "((?<!\\w)enum(?!\\w))(?:(?:\\s)+(class|struct))?(?:(?:(?:\\s)+|((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\))))|(?={))(?:(?:\\s)+)?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))?)(?:(?:(?:\\s)+)?(:)(?:(?:\\s)+)?(?:((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?(::))?(?:(?:\\s)+)?((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)))?",
3794			"end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
3795			"beginCaptures": {
3796				"0": {
3797					"name": "meta.head.enum.cpp"
3798				},
3799				"1": {
3800					"name": "storage.type.enum.cpp"
3801				},
3802				"2": {
3803					"name": "storage.type.enum.enum-key.$2.cpp"
3804				},
3805				"3": {
3806					"patterns": [
3807						{
3808							"include": "#attributes_context"
3809						},
3810						{
3811							"include": "#number_literal"
3812						}
3813					]
3814				},
3815				"4": {
3816					"name": "entity.name.type.enum.cpp"
3817				},
3818				"5": {
3819					"name": "punctuation.separator.colon.type-specifier.cpp"
3820				},
3821				"6": {
3822					"patterns": [
3823						{
3824							"include": "#scope_resolution_inner_generated"
3825						}
3826					]
3827				},
3828				"7": {
3829					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
3830				},
3831				"8": {
3832					"patterns": [
3833						{
3834							"include": "#template_call_range"
3835						}
3836					]
3837				},
3838				"9": {},
3839				"10": {
3840					"name": "entity.name.scope-resolution.cpp"
3841				},
3842				"11": {
3843					"name": "meta.template.call.cpp",
3844					"patterns": [
3845						{
3846							"include": "#template_call_range"
3847						}
3848					]
3849				},
3850				"12": {},
3851				"13": {
3852					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
3853				},
3854				"14": {
3855					"name": "storage.type.integral.$14.cpp"
3856				}
3857			},
3858			"endCaptures": {
3859				"1": {
3860					"name": "punctuation.terminator.statement.cpp"
3861				},
3862				"2": {
3863					"name": "punctuation.terminator.statement.cpp"
3864				}
3865			},
3866			"name": "meta.block.enum.cpp",
3867			"patterns": [
3868				{
3869					"begin": "\\G ?",
3870					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
3871					"beginCaptures": {},
3872					"endCaptures": {
3873						"0": {
3874							"name": "punctuation.section.block.begin.bracket.curly.enum.cpp"
3875						}
3876					},
3877					"name": "meta.head.enum.cpp",
3878					"patterns": [
3879						{
3880							"include": "$self"
3881						}
3882					]
3883				},
3884				{
3885					"begin": "(?<=\\{|<%|\\?\\?<)",
3886					"end": "\\}|%>|\\?\\?>",
3887					"beginCaptures": {},
3888					"endCaptures": {
3889						"0": {
3890							"name": "punctuation.section.block.end.bracket.curly.enum.cpp"
3891						}
3892					},
3893					"name": "meta.body.enum.cpp",
3894					"patterns": [
3895						{
3896							"include": "#ever_present_context"
3897						},
3898						{
3899							"include": "#enumerator_list"
3900						},
3901						{
3902							"include": "#comments"
3903						},
3904						{
3905							"include": "#comma"
3906						},
3907						{
3908							"include": "#semicolon"
3909						}
3910					]
3911				},
3912				{
3913					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
3914					"end": "[\\s]*(?=;)",
3915					"beginCaptures": {},
3916					"endCaptures": {},
3917					"name": "meta.tail.enum.cpp",
3918					"patterns": [
3919						{
3920							"include": "$self"
3921						}
3922					]
3923				}
3924			]
3925		},
3926		"enum_declare": {
3927			"match": "((?<!\\w)enum(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
3928			"captures": {
3929				"1": {
3930					"name": "storage.type.enum.declare.cpp"
3931				},
3932				"2": {
3933					"patterns": [
3934						{
3935							"include": "#inline_comment"
3936						}
3937					]
3938				},
3939				"3": {
3940					"patterns": [
3941						{
3942							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
3943							"captures": {
3944								"1": {
3945									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3946								},
3947								"2": {
3948									"name": "comment.block.cpp"
3949								},
3950								"3": {
3951									"patterns": [
3952										{
3953											"match": "\\*\\/",
3954											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3955										},
3956										{
3957											"match": "\\*",
3958											"name": "comment.block.cpp"
3959										}
3960									]
3961								}
3962							}
3963						}
3964					]
3965				},
3966				"4": {
3967					"name": "entity.name.type.enum.cpp"
3968				},
3969				"5": {
3970					"patterns": [
3971						{
3972							"match": "\\*",
3973							"name": "storage.modifier.pointer.cpp"
3974						},
3975						{
3976							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
3977							"captures": {
3978								"1": {
3979									"patterns": [
3980										{
3981											"include": "#inline_comment"
3982										}
3983									]
3984								},
3985								"2": {
3986									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
3987								},
3988								"3": {
3989									"name": "comment.block.cpp"
3990								},
3991								"4": {
3992									"patterns": [
3993										{
3994											"match": "\\*\\/",
3995											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
3996										},
3997										{
3998											"match": "\\*",
3999											"name": "comment.block.cpp"
4000										}
4001									]
4002								}
4003							},
4004							"name": "invalid.illegal.reference-type.cpp"
4005						},
4006						{
4007							"match": "\\&",
4008							"name": "storage.modifier.reference.cpp"
4009						}
4010					]
4011				},
4012				"6": {
4013					"patterns": [
4014						{
4015							"include": "#inline_comment"
4016						}
4017					]
4018				},
4019				"7": {
4020					"patterns": [
4021						{
4022							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
4023							"captures": {
4024								"1": {
4025									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4026								},
4027								"2": {
4028									"name": "comment.block.cpp"
4029								},
4030								"3": {
4031									"patterns": [
4032										{
4033											"match": "\\*\\/",
4034											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4035										},
4036										{
4037											"match": "\\*",
4038											"name": "comment.block.cpp"
4039										}
4040									]
4041								}
4042							}
4043						}
4044					]
4045				},
4046				"8": {
4047					"patterns": [
4048						{
4049							"include": "#inline_comment"
4050						}
4051					]
4052				},
4053				"9": {
4054					"patterns": [
4055						{
4056							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
4057							"captures": {
4058								"1": {
4059									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4060								},
4061								"2": {
4062									"name": "comment.block.cpp"
4063								},
4064								"3": {
4065									"patterns": [
4066										{
4067											"match": "\\*\\/",
4068											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4069										},
4070										{
4071											"match": "\\*",
4072											"name": "comment.block.cpp"
4073										}
4074									]
4075								}
4076							}
4077						}
4078					]
4079				},
4080				"10": {
4081					"patterns": [
4082						{
4083							"include": "#inline_comment"
4084						}
4085					]
4086				},
4087				"11": {
4088					"patterns": [
4089						{
4090							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
4091							"captures": {
4092								"1": {
4093									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4094								},
4095								"2": {
4096									"name": "comment.block.cpp"
4097								},
4098								"3": {
4099									"patterns": [
4100										{
4101											"match": "\\*\\/",
4102											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4103										},
4104										{
4105											"match": "\\*",
4106											"name": "comment.block.cpp"
4107										}
4108									]
4109								}
4110							}
4111						}
4112					]
4113				},
4114				"12": {
4115					"name": "variable.other.object.declare.cpp"
4116				},
4117				"13": {
4118					"patterns": [
4119						{
4120							"include": "#inline_comment"
4121						}
4122					]
4123				},
4124				"14": {
4125					"patterns": [
4126						{
4127							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
4128							"captures": {
4129								"1": {
4130									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4131								},
4132								"2": {
4133									"name": "comment.block.cpp"
4134								},
4135								"3": {
4136									"patterns": [
4137										{
4138											"match": "\\*\\/",
4139											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4140										},
4141										{
4142											"match": "\\*",
4143											"name": "comment.block.cpp"
4144										}
4145									]
4146								}
4147							}
4148						}
4149					]
4150				}
4151			}
4152		},
4153		"enumerator_list": {
4154			"match": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(?:(?:\\s)+)?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?(?:(?:\\s)+)?(?:(\\=)(?:(?:\\s)+)?(.+?)(?:(?:\\s)+)?)?(?:(?:((?:[,;](?!')|\\n))|(?=\\}[^']))|(?=(?:\\/\\/|\\/\\*)))",
4155			"captures": {
4156				"1": {
4157					"name": "variable.other.enummember.cpp"
4158				},
4159				"2": {
4160					"patterns": [
4161						{
4162							"include": "#attributes_context"
4163						},
4164						{
4165							"include": "#number_literal"
4166						}
4167					]
4168				},
4169				"3": {
4170					"name": "keyword.operator.assignment.cpp"
4171				},
4172				"4": {
4173					"patterns": [
4174						{
4175							"include": "#evaluation_context"
4176						}
4177					]
4178				},
4179				"5": {
4180					"patterns": [
4181						{
4182							"include": "#comma"
4183						},
4184						{
4185							"include": "#semicolon"
4186						}
4187					]
4188				}
4189			},
4190			"name": "meta.enum.definition.cpp"
4191		},
4192		"evaluation_context": {
4193			"patterns": [
4194				{
4195					"include": "#ever_present_context"
4196				},
4197				{
4198					"include": "#string_context"
4199				},
4200				{
4201					"include": "#number_literal"
4202				},
4203				{
4204					"include": "#method_access"
4205				},
4206				{
4207					"include": "#member_access"
4208				},
4209				{
4210					"include": "#predefined_macros"
4211				},
4212				{
4213					"include": "#operators"
4214				},
4215				{
4216					"include": "#memory_operators"
4217				},
4218				{
4219					"include": "#wordlike_operators"
4220				},
4221				{
4222					"include": "#type_casting_operators"
4223				},
4224				{
4225					"include": "#control_flow_keywords"
4226				},
4227				{
4228					"include": "#exception_keywords"
4229				},
4230				{
4231					"include": "#the_this_keyword"
4232				},
4233				{
4234					"include": "#language_constants"
4235				},
4236				{
4237					"include": "#builtin_storage_type_initilizer"
4238				},
4239				{
4240					"include": "#qualifiers_and_specifiers_post_parameters"
4241				},
4242				{
4243					"include": "#functional_specifiers_pre_parameters"
4244				},
4245				{
4246					"include": "#storage_types"
4247				},
4248				{
4249					"include": "#lambdas"
4250				},
4251				{
4252					"include": "#attributes_context"
4253				},
4254				{
4255					"include": "#parentheses"
4256				},
4257				{
4258					"include": "#function_call"
4259				},
4260				{
4261					"include": "#scope_resolution_inner_generated"
4262				},
4263				{
4264					"include": "#square_brackets"
4265				},
4266				{
4267					"include": "#semicolon"
4268				},
4269				{
4270					"include": "#comma"
4271				}
4272			]
4273		},
4274		"ever_present_context": {
4275			"patterns": [
4276				{
4277					"include": "#pragma_mark"
4278				},
4279				{
4280					"include": "#pragma"
4281				},
4282				{
4283					"include": "#include"
4284				},
4285				{
4286					"include": "#line"
4287				},
4288				{
4289					"include": "#diagnostic"
4290				},
4291				{
4292					"include": "#undef"
4293				},
4294				{
4295					"include": "#preprocessor_conditional_range"
4296				},
4297				{
4298					"include": "#single_line_macro"
4299				},
4300				{
4301					"include": "#macro"
4302				},
4303				{
4304					"include": "#preprocessor_conditional_standalone"
4305				},
4306				{
4307					"include": "#macro_argument"
4308				},
4309				{
4310					"include": "#comments"
4311				},
4312				{
4313					"include": "#line_continuation_character"
4314				}
4315			]
4316		},
4317		"exception_keywords": {
4318			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:(?:throw)|(?:catch)|(?:try))(?!\\w))",
4319			"captures": {
4320				"1": {
4321					"patterns": [
4322						{
4323							"include": "#inline_comment"
4324						}
4325					]
4326				},
4327				"2": {
4328					"patterns": [
4329						{
4330							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
4331							"captures": {
4332								"1": {
4333									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4334								},
4335								"2": {
4336									"name": "comment.block.cpp"
4337								},
4338								"3": {
4339									"patterns": [
4340										{
4341											"match": "\\*\\/",
4342											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4343										},
4344										{
4345											"match": "\\*",
4346											"name": "comment.block.cpp"
4347										}
4348									]
4349								}
4350							}
4351						}
4352					]
4353				},
4354				"3": {
4355					"name": "keyword.control.exception.$3.cpp"
4356				}
4357			}
4358		},
4359		"extern_block": {
4360			"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(extern)(?=\\s*\\\")",
4361			"end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
4362			"beginCaptures": {
4363				"0": {
4364					"name": "meta.head.extern.cpp"
4365				},
4366				"1": {
4367					"patterns": [
4368						{
4369							"include": "#inline_comment"
4370						}
4371					]
4372				},
4373				"2": {
4374					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4375				},
4376				"3": {
4377					"name": "comment.block.cpp"
4378				},
4379				"4": {
4380					"patterns": [
4381						{
4382							"match": "\\*\\/",
4383							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4384						},
4385						{
4386							"match": "\\*",
4387							"name": "comment.block.cpp"
4388						}
4389					]
4390				},
4391				"5": {
4392					"name": "storage.type.extern.cpp"
4393				}
4394			},
4395			"endCaptures": {
4396				"1": {
4397					"name": "punctuation.terminator.statement.cpp"
4398				},
4399				"2": {
4400					"name": "punctuation.terminator.statement.cpp"
4401				}
4402			},
4403			"name": "meta.block.extern.cpp",
4404			"patterns": [
4405				{
4406					"begin": "\\G ?",
4407					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
4408					"beginCaptures": {},
4409					"endCaptures": {
4410						"0": {
4411							"name": "punctuation.section.block.begin.bracket.curly.extern.cpp"
4412						}
4413					},
4414					"name": "meta.head.extern.cpp",
4415					"patterns": [
4416						{
4417							"include": "$self"
4418						}
4419					]
4420				},
4421				{
4422					"begin": "(?<=\\{|<%|\\?\\?<)",
4423					"end": "\\}|%>|\\?\\?>",
4424					"beginCaptures": {},
4425					"endCaptures": {
4426						"0": {
4427							"name": "punctuation.section.block.end.bracket.curly.extern.cpp"
4428						}
4429					},
4430					"name": "meta.body.extern.cpp",
4431					"patterns": [
4432						{
4433							"include": "$self"
4434						}
4435					]
4436				},
4437				{
4438					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
4439					"end": "[\\s]*(?=;)",
4440					"beginCaptures": {},
4441					"endCaptures": {},
4442					"name": "meta.tail.extern.cpp",
4443					"patterns": [
4444						{
4445							"include": "$self"
4446						}
4447					]
4448				},
4449				{
4450					"include": "$self"
4451				}
4452			]
4453		},
4454		"function_body_context": {
4455			"patterns": [
4456				{
4457					"include": "#ever_present_context"
4458				},
4459				{
4460					"include": "#using_namespace"
4461				},
4462				{
4463					"include": "#type_alias"
4464				},
4465				{
4466					"include": "#using_name"
4467				},
4468				{
4469					"include": "#namespace_alias"
4470				},
4471				{
4472					"include": "#typedef_class"
4473				},
4474				{
4475					"include": "#typedef_struct"
4476				},
4477				{
4478					"include": "#typedef_union"
4479				},
4480				{
4481					"include": "#misc_keywords"
4482				},
4483				{
4484					"include": "#standard_declares"
4485				},
4486				{
4487					"include": "#class_block"
4488				},
4489				{
4490					"include": "#struct_block"
4491				},
4492				{
4493					"include": "#union_block"
4494				},
4495				{
4496					"include": "#enum_block"
4497				},
4498				{
4499					"include": "#access_control_keywords"
4500				},
4501				{
4502					"include": "#block"
4503				},
4504				{
4505					"include": "#static_assert"
4506				},
4507				{
4508					"include": "#assembly"
4509				},
4510				{
4511					"include": "#function_pointer"
4512				},
4513				{
4514					"include": "#switch_statement"
4515				},
4516				{
4517					"include": "#goto_statement"
4518				},
4519				{
4520					"include": "#evaluation_context"
4521				},
4522				{
4523					"include": "#label"
4524				}
4525			]
4526		},
4527		"function_call": {
4528			"begin": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)(?:\\s)*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?<!\\Wreinterpret_cast|^reinterpret_cast|\\Watomic_noexcept|^atomic_noexcept|\\Wuint_least16_t|^uint_least16_t|\\Wuint_least32_t|^uint_least32_t|\\Wuint_least64_t|^uint_least64_t|\\Wuint_fast16_t|^uint_fast16_t|\\Wint_least16_t|^int_least16_t|\\Watomic_commit|^atomic_commit|\\Watomic_cancel|^atomic_cancel|\\Wuint_fast64_t|^uint_fast64_t|\\Wuint_least8_t|^uint_least8_t|\\Wint_least64_t|^int_least64_t|\\Wint_least32_t|^int_least32_t|\\Wuint_fast32_t|^uint_fast32_t|\\Wdynamic_cast|^dynamic_cast|\\Wthread_local|^thread_local|\\Wuint_fast8_t|^uint_fast8_t|\\Wint_fast64_t|^int_fast64_t|\\Wint_fast32_t|^int_fast32_t|\\Wint_fast16_t|^int_fast16_t|\\Wsynchronized|^synchronized|\\Wint_least8_t|^int_least8_t|\\Wsuseconds_t|^suseconds_t|\\Wint_fast8_t|^int_fast8_t|\\Wstatic_cast|^static_cast|\\Wconst_cast|^const_cast|\\Wuseconds_t|^useconds_t|\\Wnamespace|^namespace|\\Wco_return|^co_return|\\Wblksize_t|^blksize_t|\\Win_addr_t|^in_addr_t|\\Win_port_t|^in_port_t|\\Wuintptr_t|^uintptr_t|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wconstexpr|^constexpr|\\Wconstexpr|^constexpr|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wprotected|^protected|\\Wco_return|^co_return|\\Wco_await|^co_await|\\Wnoexcept|^noexcept|\\Wrestrict|^restrict|\\Wnoexcept|^noexcept|\\Wdecltype|^decltype|\\Wintmax_t|^intmax_t|\\Wuint64_t|^uint64_t|\\Wintmax_t|^intmax_t|\\Wcontinue|^continue|\\Wreflexpr|^reflexpr|\\Wintptr_t|^intptr_t|\\Wuint32_t|^uint32_t|\\Wuint16_t|^uint16_t|\\Wexplicit|^explicit|\\Wtypename|^typename|\\Wu_quad_t|^u_quad_t|\\Wvolatile|^volatile|\\Wtemplate|^template|\\Wnoexcept|^noexcept|\\Wco_yield|^co_yield|\\Wco_await|^co_await|\\Wvolatile|^volatile|\\Woperator|^operator|\\Wunsigned|^unsigned|\\Wregister|^register|\\Wblkcnt_t|^blkcnt_t|\\Wrequires|^requires|\\Wco_yield|^co_yield|\\Wnullptr|^nullptr|\\Wqaddr_t|^qaddr_t|\\Wcaddr_t|^caddr_t|\\Wmutable|^mutable|\\Wvirtual|^virtual|\\Wmutable|^mutable|\\Wdaddr_t|^daddr_t|\\Wfixpt_t|^fixpt_t|\\Wconcept|^concept|\\Wnlink_t|^nlink_t|\\Wdefault|^default|\\Wwchar_t|^wchar_t|\\Wsegsz_t|^segsz_t|\\Wswblk_t|^swblk_t|\\Wclock_t|^clock_t|\\Wssize_t|^ssize_t|\\W__asm__|^__asm__|\\Wint16_t|^int16_t|\\Wint32_t|^int32_t|\\Wint64_t|^int64_t|\\Wuint8_t|^uint8_t|\\Wu_short|^u_short|\\Walignas|^alignas|\\Walignof|^alignof|\\Wtypedef|^typedef|\\Wprivate|^private|\\Wu_char|^u_char|\\Wmode_t|^mode_t|\\Wstatic|^static|\\Wdouble|^double|\\Wnot_eq|^not_eq|\\Wtypeid|^typeid|\\Wmodule|^module|\\Wstruct|^struct|\\Wexport|^export|\\Wxor_eq|^xor_eq|\\Wand_eq|^and_eq|\\Wu_long|^u_long|\\Wquad_t|^quad_t|\\Wsigned|^signed|\\Wushort|^ushort|\\Wimport|^import|\\Wbitand|^bitand|\\Wfriend|^friend|\\Wtime_t|^time_t|\\Wdelete|^delete|\\Wsize_t|^size_t|\\Wint8_t|^int8_t|\\Winline|^inline|\\Wextern|^extern|\\Wpublic|^public|\\Wsizeof|^sizeof|\\Wswitch|^switch|\\Wreturn|^return|\\Wconst|^const|\\Wshort|^short|\\Wfloat|^float|\\Wu_int|^u_int|\\Wdiv_t|^div_t|\\Wdev_t|^dev_t|\\Wgid_t|^gid_t|\\Wino_t|^ino_t|\\Wkey_t|^key_t|\\Wpid_t|^pid_t|\\Woff_t|^off_t|\\Wuid_t|^uid_t|\\Wwhile|^while|\\Wor_eq|^or_eq|\\Wthrow|^throw|\\Wbitor|^bitor|\\Wfalse|^false|\\Wclass|^class|\\Wunion|^union|\\Wconst|^const|\\Wcompl|^compl|\\Wusing|^using|\\Wcatch|^catch|\\Wbreak|^break|\\Wtrue|^true|\\Wid_t|^id_t|\\Wchar|^char|\\Wid_t|^id_t|\\Wauto|^auto|\\Wcase|^case|\\Wuint|^uint|\\Wbool|^bool|\\Wlong|^long|\\Wvoid|^void|\\Wenum|^enum|\\WNULL|^NULL|\\Wthis|^this|\\Welse|^else|\\Wgoto|^goto|\\Wnew|^new|\\Wtry|^try|\\Wxor|^xor|\\Wnot|^not|\\Wint|^int|\\Wand|^and|\\Wfor|^for|\\Wasm|^asm|\\Wdo|^do|\\Wor|^or|\\Wif|^if)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)(?:\\s)*+)?(\\()",
4529			"end": "\\)",
4530			"beginCaptures": {
4531				"1": {
4532					"patterns": [
4533						{
4534							"include": "#scope_resolution_function_call_inner_generated"
4535						}
4536					]
4537				},
4538				"2": {
4539					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
4540				},
4541				"3": {
4542					"patterns": [
4543						{
4544							"include": "#template_call_range"
4545						}
4546					]
4547				},
4548				"4": {},
4549				"5": {
4550					"name": "entity.name.function.call.cpp"
4551				},
4552				"6": {
4553					"patterns": [
4554						{
4555							"include": "#inline_comment"
4556						}
4557					]
4558				},
4559				"7": {
4560					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4561				},
4562				"8": {
4563					"name": "comment.block.cpp"
4564				},
4565				"9": {
4566					"patterns": [
4567						{
4568							"match": "\\*\\/",
4569							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4570						},
4571						{
4572							"match": "\\*",
4573							"name": "comment.block.cpp"
4574						}
4575					]
4576				},
4577				"10": {
4578					"name": "meta.template.call.cpp",
4579					"patterns": [
4580						{
4581							"include": "#template_call_range"
4582						}
4583					]
4584				},
4585				"11": {},
4586				"12": {
4587					"name": "punctuation.section.arguments.begin.bracket.round.function.call.cpp"
4588				}
4589			},
4590			"endCaptures": {
4591				"0": {
4592					"name": "punctuation.section.arguments.end.bracket.round.function.call.cpp"
4593				}
4594			},
4595			"patterns": [
4596				{
4597					"include": "#evaluation_context"
4598				}
4599			]
4600		},
4601		"function_definition": {
4602			"begin": "(?:(?:^|\\G|(?<=;|\\}))|(?<=>))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?<!\\w)template(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?<!\\w)(?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<60>?)+>)(?:\\s)*+)?::)*\\s*+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)\\b(?<!\\Wreinterpret_cast|^reinterpret_cast|\\Watomic_noexcept|^atomic_noexcept|\\Wuint_least16_t|^uint_least16_t|\\Wuint_least32_t|^uint_least32_t|\\Wuint_least64_t|^uint_least64_t|\\Wuint_fast16_t|^uint_fast16_t|\\Wint_least16_t|^int_least16_t|\\Watomic_commit|^atomic_commit|\\Watomic_cancel|^atomic_cancel|\\Wuint_fast64_t|^uint_fast64_t|\\Wuint_least8_t|^uint_least8_t|\\Wint_least64_t|^int_least64_t|\\Wint_least32_t|^int_least32_t|\\Wuint_fast32_t|^uint_fast32_t|\\Wdynamic_cast|^dynamic_cast|\\Wthread_local|^thread_local|\\Wuint_fast8_t|^uint_fast8_t|\\Wint_fast64_t|^int_fast64_t|\\Wint_fast32_t|^int_fast32_t|\\Wint_fast16_t|^int_fast16_t|\\Wsynchronized|^synchronized|\\Wint_least8_t|^int_least8_t|\\Wsuseconds_t|^suseconds_t|\\Wint_fast8_t|^int_fast8_t|\\Wstatic_cast|^static_cast|\\Wconst_cast|^const_cast|\\Wuseconds_t|^useconds_t|\\Wnamespace|^namespace|\\Wco_return|^co_return|\\Wblksize_t|^blksize_t|\\Win_addr_t|^in_addr_t|\\Win_port_t|^in_port_t|\\Wuintptr_t|^uintptr_t|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wconstexpr|^constexpr|\\Wconstexpr|^constexpr|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wprotected|^protected|\\Wco_return|^co_return|\\Wco_await|^co_await|\\Wnoexcept|^noexcept|\\Wrestrict|^restrict|\\Wnoexcept|^noexcept|\\Wdecltype|^decltype|\\Wintmax_t|^intmax_t|\\Wuint64_t|^uint64_t|\\Wintmax_t|^intmax_t|\\Wcontinue|^continue|\\Wreflexpr|^reflexpr|\\Wintptr_t|^intptr_t|\\Wuint32_t|^uint32_t|\\Wuint16_t|^uint16_t|\\Wexplicit|^explicit|\\Wtypename|^typename|\\Wu_quad_t|^u_quad_t|\\Wvolatile|^volatile|\\Wtemplate|^template|\\Wnoexcept|^noexcept|\\Wco_yield|^co_yield|\\Wco_await|^co_await|\\Wvolatile|^volatile|\\Woperator|^operator|\\Wunsigned|^unsigned|\\Wregister|^register|\\Wblkcnt_t|^blkcnt_t|\\Wrequires|^requires|\\Wco_yield|^co_yield|\\Wnullptr|^nullptr|\\Wqaddr_t|^qaddr_t|\\Wcaddr_t|^caddr_t|\\Wmutable|^mutable|\\Wvirtual|^virtual|\\Wmutable|^mutable|\\Wdaddr_t|^daddr_t|\\Wfixpt_t|^fixpt_t|\\Wconcept|^concept|\\Wnlink_t|^nlink_t|\\Wdefault|^default|\\Wwchar_t|^wchar_t|\\Wsegsz_t|^segsz_t|\\Wswblk_t|^swblk_t|\\Wclock_t|^clock_t|\\Wssize_t|^ssize_t|\\W__asm__|^__asm__|\\Wint16_t|^int16_t|\\Wint32_t|^int32_t|\\Wint64_t|^int64_t|\\Wuint8_t|^uint8_t|\\Wu_short|^u_short|\\Walignas|^alignas|\\Walignof|^alignof|\\Wtypedef|^typedef|\\Wprivate|^private|\\Wu_char|^u_char|\\Wmode_t|^mode_t|\\Wstatic|^static|\\Wdouble|^double|\\Wnot_eq|^not_eq|\\Wtypeid|^typeid|\\Wmodule|^module|\\Wstruct|^struct|\\Wexport|^export|\\Wxor_eq|^xor_eq|\\Wand_eq|^and_eq|\\Wu_long|^u_long|\\Wquad_t|^quad_t|\\Wsigned|^signed|\\Wushort|^ushort|\\Wimport|^import|\\Wbitand|^bitand|\\Wfriend|^friend|\\Wtime_t|^time_t|\\Wdelete|^delete|\\Wsize_t|^size_t|\\Wint8_t|^int8_t|\\Winline|^inline|\\Wextern|^extern|\\Wpublic|^public|\\Wsizeof|^sizeof|\\Wswitch|^switch|\\Wreturn|^return|\\Wconst|^const|\\Wshort|^short|\\Wfloat|^float|\\Wu_int|^u_int|\\Wdiv_t|^div_t|\\Wdev_t|^dev_t|\\Wgid_t|^gid_t|\\Wino_t|^ino_t|\\Wkey_t|^key_t|\\Wpid_t|^pid_t|\\Woff_t|^off_t|\\Wuid_t|^uid_t|\\Wwhile|^while|\\Wor_eq|^or_eq|\\Wthrow|^throw|\\Wbitor|^bitor|\\Wfalse|^false|\\Wclass|^class|\\Wunion|^union|\\Wconst|^const|\\Wcompl|^compl|\\Wusing|^using|\\Wcatch|^catch|\\Wbreak|^break|\\Wtrue|^true|\\Wid_t|^id_t|\\Wchar|^char|\\Wid_t|^id_t|\\Wauto|^auto|\\Wcase|^case|\\Wuint|^uint|\\Wbool|^bool|\\Wlong|^long|\\Wvoid|^void|\\Wenum|^enum|\\WNULL|^NULL|\\Wthis|^this|\\Welse|^else|\\Wgoto|^goto|\\Wnew|^new|\\Wtry|^try|\\Wxor|^xor|\\Wnot|^not|\\Wint|^int|\\Wand|^and|\\Wfor|^for|\\Wasm|^asm|\\Wdo|^do|\\Wor|^or|\\Wif|^if)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\()",
4603			"end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
4604			"beginCaptures": {
4605				"0": {
4606					"name": "meta.head.function.definition.cpp"
4607				},
4608				"1": {
4609					"patterns": [
4610						{
4611							"include": "#inline_comment"
4612						}
4613					]
4614				},
4615				"2": {
4616					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4617				},
4618				"3": {
4619					"name": "comment.block.cpp"
4620				},
4621				"4": {
4622					"patterns": [
4623						{
4624							"match": "\\*\\/",
4625							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4626						},
4627						{
4628							"match": "\\*",
4629							"name": "comment.block.cpp"
4630						}
4631					]
4632				},
4633				"5": {
4634					"name": "storage.type.template.cpp"
4635				},
4636				"6": {
4637					"patterns": [
4638						{
4639							"include": "#inline_comment"
4640						}
4641					]
4642				},
4643				"7": {
4644					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4645				},
4646				"8": {
4647					"name": "comment.block.cpp"
4648				},
4649				"9": {
4650					"patterns": [
4651						{
4652							"match": "\\*\\/",
4653							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4654						},
4655						{
4656							"match": "\\*",
4657							"name": "comment.block.cpp"
4658						}
4659					]
4660				},
4661				"10": {
4662					"patterns": [
4663						{
4664							"include": "#attributes_context"
4665						},
4666						{
4667							"include": "#number_literal"
4668						}
4669					]
4670				},
4671				"11": {
4672					"patterns": [
4673						{
4674							"match": "((?<!\\w)(?:(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
4675							"captures": {
4676								"1": {
4677									"name": "storage.modifier.$1.cpp"
4678								},
4679								"2": {
4680									"patterns": [
4681										{
4682											"include": "#inline_comment"
4683										}
4684									]
4685								},
4686								"3": {
4687									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4688								},
4689								"4": {
4690									"name": "comment.block.cpp"
4691								},
4692								"5": {
4693									"patterns": [
4694										{
4695											"match": "\\*\\/",
4696											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4697										},
4698										{
4699											"match": "\\*",
4700											"name": "comment.block.cpp"
4701										}
4702									]
4703								}
4704							}
4705						}
4706					]
4707				},
4708				"12": {
4709					"name": "storage.modifier.$12.cpp"
4710				},
4711				"13": {
4712					"patterns": [
4713						{
4714							"include": "#inline_comment"
4715						}
4716					]
4717				},
4718				"14": {
4719					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4720				},
4721				"15": {
4722					"name": "comment.block.cpp"
4723				},
4724				"16": {
4725					"patterns": [
4726						{
4727							"match": "\\*\\/",
4728							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4729						},
4730						{
4731							"match": "\\*",
4732							"name": "comment.block.cpp"
4733						}
4734					]
4735				},
4736				"17": {
4737					"name": "meta.qualified_type.cpp",
4738					"patterns": [
4739						{
4740							"match": "::",
4741							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
4742						},
4743						{
4744							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
4745							"name": "storage.type.$0.cpp"
4746						},
4747						{
4748							"include": "#attributes_context"
4749						},
4750						{
4751							"include": "#storage_types"
4752						},
4753						{
4754							"include": "#number_literal"
4755						},
4756						{
4757							"include": "#string_context"
4758						},
4759						{
4760							"include": "#comma"
4761						},
4762						{
4763							"include": "#scope_resolution_inner_generated"
4764						},
4765						{
4766							"begin": "<",
4767							"end": ">",
4768							"beginCaptures": {
4769								"0": {
4770									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
4771								}
4772							},
4773							"endCaptures": {
4774								"0": {
4775									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
4776								}
4777							},
4778							"name": "meta.template.call.cpp",
4779							"patterns": [
4780								{
4781									"include": "#template_call_context"
4782								}
4783							]
4784						},
4785						{
4786							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
4787							"name": "entity.name.type.cpp"
4788						}
4789					]
4790				},
4791				"18": {
4792					"patterns": [
4793						{
4794							"include": "#attributes_context"
4795						},
4796						{
4797							"include": "#number_literal"
4798						}
4799					]
4800				},
4801				"19": {
4802					"patterns": [
4803						{
4804							"include": "#inline_comment"
4805						}
4806					]
4807				},
4808				"20": {
4809					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4810				},
4811				"21": {
4812					"name": "comment.block.cpp"
4813				},
4814				"22": {
4815					"patterns": [
4816						{
4817							"match": "\\*\\/",
4818							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4819						},
4820						{
4821							"match": "\\*",
4822							"name": "comment.block.cpp"
4823						}
4824					]
4825				},
4826				"23": {
4827					"patterns": [
4828						{
4829							"include": "#inline_comment"
4830						}
4831					]
4832				},
4833				"24": {
4834					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4835				},
4836				"25": {
4837					"name": "comment.block.cpp"
4838				},
4839				"26": {
4840					"patterns": [
4841						{
4842							"match": "\\*\\/",
4843							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4844						},
4845						{
4846							"match": "\\*",
4847							"name": "comment.block.cpp"
4848						}
4849					]
4850				},
4851				"27": {
4852					"patterns": [
4853						{
4854							"match": "::",
4855							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
4856						},
4857						{
4858							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
4859							"name": "entity.name.scope-resolution.type.cpp"
4860						},
4861						{
4862							"include": "#template_call_range"
4863						}
4864					]
4865				},
4866				"28": {
4867					"patterns": [
4868						{
4869							"include": "#template_call_range"
4870						}
4871					]
4872				},
4873				"29": {},
4874				"30": {
4875					"patterns": [
4876						{
4877							"include": "#inline_comment"
4878						}
4879					]
4880				},
4881				"31": {
4882					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4883				},
4884				"32": {
4885					"name": "comment.block.cpp"
4886				},
4887				"33": {
4888					"patterns": [
4889						{
4890							"match": "\\*\\/",
4891							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4892						},
4893						{
4894							"match": "\\*",
4895							"name": "comment.block.cpp"
4896						}
4897					]
4898				},
4899				"34": {},
4900				"35": {
4901					"patterns": [
4902						{
4903							"match": "\\*",
4904							"name": "storage.modifier.pointer.cpp"
4905						},
4906						{
4907							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
4908							"captures": {
4909								"1": {
4910									"patterns": [
4911										{
4912											"include": "#inline_comment"
4913										}
4914									]
4915								},
4916								"2": {
4917									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4918								},
4919								"3": {
4920									"name": "comment.block.cpp"
4921								},
4922								"4": {
4923									"patterns": [
4924										{
4925											"match": "\\*\\/",
4926											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4927										},
4928										{
4929											"match": "\\*",
4930											"name": "comment.block.cpp"
4931										}
4932									]
4933								}
4934							},
4935							"name": "invalid.illegal.reference-type.cpp"
4936						},
4937						{
4938							"match": "\\&",
4939							"name": "storage.modifier.reference.cpp"
4940						}
4941					]
4942				},
4943				"36": {
4944					"patterns": [
4945						{
4946							"include": "#inline_comment"
4947						}
4948					]
4949				},
4950				"37": {
4951					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4952				},
4953				"38": {
4954					"name": "comment.block.cpp"
4955				},
4956				"39": {
4957					"patterns": [
4958						{
4959							"match": "\\*\\/",
4960							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4961						},
4962						{
4963							"match": "\\*",
4964							"name": "comment.block.cpp"
4965						}
4966					]
4967				},
4968				"40": {
4969					"patterns": [
4970						{
4971							"include": "#inline_comment"
4972						}
4973					]
4974				},
4975				"41": {
4976					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
4977				},
4978				"42": {
4979					"name": "comment.block.cpp"
4980				},
4981				"43": {
4982					"patterns": [
4983						{
4984							"match": "\\*\\/",
4985							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
4986						},
4987						{
4988							"match": "\\*",
4989							"name": "comment.block.cpp"
4990						}
4991					]
4992				},
4993				"44": {
4994					"patterns": [
4995						{
4996							"include": "#inline_comment"
4997						}
4998					]
4999				},
5000				"45": {
5001					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5002				},
5003				"46": {
5004					"name": "comment.block.cpp"
5005				},
5006				"47": {
5007					"patterns": [
5008						{
5009							"match": "\\*\\/",
5010							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5011						},
5012						{
5013							"match": "\\*",
5014							"name": "comment.block.cpp"
5015						}
5016					]
5017				},
5018				"48": {
5019					"patterns": [
5020						{
5021							"include": "#inline_comment"
5022						}
5023					]
5024				},
5025				"49": {
5026					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5027				},
5028				"50": {
5029					"name": "comment.block.cpp"
5030				},
5031				"51": {
5032					"patterns": [
5033						{
5034							"match": "\\*\\/",
5035							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5036						},
5037						{
5038							"match": "\\*",
5039							"name": "comment.block.cpp"
5040						}
5041					]
5042				},
5043				"52": {
5044					"name": "storage.type.modifier.calling-convention.cpp"
5045				},
5046				"53": {
5047					"patterns": [
5048						{
5049							"include": "#inline_comment"
5050						}
5051					]
5052				},
5053				"54": {
5054					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5055				},
5056				"55": {
5057					"name": "comment.block.cpp"
5058				},
5059				"56": {
5060					"patterns": [
5061						{
5062							"match": "\\*\\/",
5063							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5064						},
5065						{
5066							"match": "\\*",
5067							"name": "comment.block.cpp"
5068						}
5069					]
5070				},
5071				"57": {
5072					"patterns": [
5073						{
5074							"include": "#scope_resolution_function_definition_inner_generated"
5075						}
5076					]
5077				},
5078				"58": {
5079					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
5080				},
5081				"59": {
5082					"patterns": [
5083						{
5084							"include": "#template_call_range"
5085						}
5086					]
5087				},
5088				"60": {},
5089				"61": {
5090					"name": "entity.name.function.definition.cpp"
5091				},
5092				"62": {
5093					"patterns": [
5094						{
5095							"include": "#inline_comment"
5096						}
5097					]
5098				},
5099				"63": {
5100					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5101				},
5102				"64": {
5103					"name": "comment.block.cpp"
5104				},
5105				"65": {
5106					"patterns": [
5107						{
5108							"match": "\\*\\/",
5109							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5110						},
5111						{
5112							"match": "\\*",
5113							"name": "comment.block.cpp"
5114						}
5115					]
5116				}
5117			},
5118			"endCaptures": {},
5119			"name": "meta.function.definition.cpp",
5120			"patterns": [
5121				{
5122					"begin": "\\G ?",
5123					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
5124					"beginCaptures": {},
5125					"endCaptures": {
5126						"0": {
5127							"name": "punctuation.section.block.begin.bracket.curly.function.definition.cpp"
5128						}
5129					},
5130					"name": "meta.head.function.definition.cpp",
5131					"patterns": [
5132						{
5133							"include": "#ever_present_context"
5134						},
5135						{
5136							"begin": "\\(",
5137							"end": "\\)",
5138							"beginCaptures": {
5139								"0": {
5140									"name": "punctuation.section.parameters.begin.bracket.round.cpp"
5141								}
5142							},
5143							"endCaptures": {
5144								"0": {
5145									"name": "punctuation.section.parameters.end.bracket.round.cpp"
5146								}
5147							},
5148							"contentName": "meta.function.definition.parameters",
5149							"patterns": [
5150								{
5151									"include": "#ever_present_context"
5152								},
5153								{
5154									"include": "#parameter_or_maybe_value"
5155								},
5156								{
5157									"include": "#comma"
5158								},
5159								{
5160									"include": "#evaluation_context"
5161								}
5162							]
5163						},
5164						{
5165							"match": "(?<=^|\\))(?:(?:\\s)+)?(->)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<23>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<23>?)+>)?(?![\\w<:.]))",
5166							"captures": {
5167								"1": {
5168									"name": "punctuation.definition.function.return-type.cpp"
5169								},
5170								"2": {
5171									"patterns": [
5172										{
5173											"include": "#inline_comment"
5174										}
5175									]
5176								},
5177								"3": {
5178									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5179								},
5180								"4": {
5181									"name": "comment.block.cpp"
5182								},
5183								"5": {
5184									"patterns": [
5185										{
5186											"match": "\\*\\/",
5187											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5188										},
5189										{
5190											"match": "\\*",
5191											"name": "comment.block.cpp"
5192										}
5193									]
5194								},
5195								"6": {
5196									"name": "meta.qualified_type.cpp",
5197									"patterns": [
5198										{
5199											"match": "::",
5200											"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
5201										},
5202										{
5203											"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
5204											"name": "storage.type.$0.cpp"
5205										},
5206										{
5207											"include": "#attributes_context"
5208										},
5209										{
5210											"include": "#storage_types"
5211										},
5212										{
5213											"include": "#number_literal"
5214										},
5215										{
5216											"include": "#string_context"
5217										},
5218										{
5219											"include": "#comma"
5220										},
5221										{
5222											"include": "#scope_resolution_inner_generated"
5223										},
5224										{
5225											"begin": "<",
5226											"end": ">",
5227											"beginCaptures": {
5228												"0": {
5229													"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
5230												}
5231											},
5232											"endCaptures": {
5233												"0": {
5234													"name": "punctuation.section.angle-brackets.end.template.call.cpp"
5235												}
5236											},
5237											"name": "meta.template.call.cpp",
5238											"patterns": [
5239												{
5240													"include": "#template_call_context"
5241												}
5242											]
5243										},
5244										{
5245											"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
5246											"name": "entity.name.type.cpp"
5247										}
5248									]
5249								},
5250								"7": {
5251									"patterns": [
5252										{
5253											"include": "#attributes_context"
5254										},
5255										{
5256											"include": "#number_literal"
5257										}
5258									]
5259								},
5260								"8": {
5261									"patterns": [
5262										{
5263											"include": "#inline_comment"
5264										}
5265									]
5266								},
5267								"9": {
5268									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5269								},
5270								"10": {
5271									"name": "comment.block.cpp"
5272								},
5273								"11": {
5274									"patterns": [
5275										{
5276											"match": "\\*\\/",
5277											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5278										},
5279										{
5280											"match": "\\*",
5281											"name": "comment.block.cpp"
5282										}
5283									]
5284								},
5285								"12": {
5286									"patterns": [
5287										{
5288											"include": "#inline_comment"
5289										}
5290									]
5291								},
5292								"13": {
5293									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5294								},
5295								"14": {
5296									"name": "comment.block.cpp"
5297								},
5298								"15": {
5299									"patterns": [
5300										{
5301											"match": "\\*\\/",
5302											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5303										},
5304										{
5305											"match": "\\*",
5306											"name": "comment.block.cpp"
5307										}
5308									]
5309								},
5310								"16": {
5311									"patterns": [
5312										{
5313											"match": "::",
5314											"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
5315										},
5316										{
5317											"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
5318											"name": "entity.name.scope-resolution.type.cpp"
5319										},
5320										{
5321											"include": "#template_call_range"
5322										}
5323									]
5324								},
5325								"17": {
5326									"patterns": [
5327										{
5328											"include": "#template_call_range"
5329										}
5330									]
5331								},
5332								"18": {},
5333								"19": {
5334									"patterns": [
5335										{
5336											"include": "#inline_comment"
5337										}
5338									]
5339								},
5340								"20": {
5341									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5342								},
5343								"21": {
5344									"name": "comment.block.cpp"
5345								},
5346								"22": {
5347									"patterns": [
5348										{
5349											"match": "\\*\\/",
5350											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5351										},
5352										{
5353											"match": "\\*",
5354											"name": "comment.block.cpp"
5355										}
5356									]
5357								},
5358								"23": {}
5359							}
5360						},
5361						{
5362							"include": "$self"
5363						}
5364					]
5365				},
5366				{
5367					"begin": "(?<=\\{|<%|\\?\\?<)",
5368					"end": "\\}|%>|\\?\\?>",
5369					"beginCaptures": {},
5370					"endCaptures": {
5371						"0": {
5372							"name": "punctuation.section.block.end.bracket.curly.function.definition.cpp"
5373						}
5374					},
5375					"name": "meta.body.function.definition.cpp",
5376					"patterns": [
5377						{
5378							"include": "#function_body_context"
5379						}
5380					]
5381				},
5382				{
5383					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
5384					"end": "[\\s]*(?=;)",
5385					"beginCaptures": {},
5386					"endCaptures": {},
5387					"name": "meta.tail.function.definition.cpp",
5388					"patterns": [
5389						{
5390							"include": "$self"
5391						}
5392					]
5393				}
5394			]
5395		},
5396		"function_parameter_context": {
5397			"patterns": [
5398				{
5399					"include": "#ever_present_context"
5400				},
5401				{
5402					"include": "#parameter"
5403				},
5404				{
5405					"include": "#comma"
5406				}
5407			]
5408		},
5409		"function_pointer": {
5410			"begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()(\\*)(?:(?:\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\s)+)?(?:(\\[)(\\w*)(\\])(?:(?:\\s)+)?)*(\\))(?:(?:\\s)+)?(\\()",
5411			"end": "(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()",
5412			"beginCaptures": {
5413				"1": {
5414					"name": "meta.qualified_type.cpp",
5415					"patterns": [
5416						{
5417							"match": "::",
5418							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
5419						},
5420						{
5421							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
5422							"name": "storage.type.$0.cpp"
5423						},
5424						{
5425							"include": "#attributes_context"
5426						},
5427						{
5428							"include": "#storage_types"
5429						},
5430						{
5431							"include": "#number_literal"
5432						},
5433						{
5434							"include": "#string_context"
5435						},
5436						{
5437							"include": "#comma"
5438						},
5439						{
5440							"include": "#scope_resolution_inner_generated"
5441						},
5442						{
5443							"begin": "<",
5444							"end": ">",
5445							"beginCaptures": {
5446								"0": {
5447									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
5448								}
5449							},
5450							"endCaptures": {
5451								"0": {
5452									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
5453								}
5454							},
5455							"name": "meta.template.call.cpp",
5456							"patterns": [
5457								{
5458									"include": "#template_call_context"
5459								}
5460							]
5461						},
5462						{
5463							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
5464							"name": "entity.name.type.cpp"
5465						}
5466					]
5467				},
5468				"2": {
5469					"patterns": [
5470						{
5471							"include": "#attributes_context"
5472						},
5473						{
5474							"include": "#number_literal"
5475						}
5476					]
5477				},
5478				"3": {
5479					"patterns": [
5480						{
5481							"include": "#inline_comment"
5482						}
5483					]
5484				},
5485				"4": {
5486					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5487				},
5488				"5": {
5489					"name": "comment.block.cpp"
5490				},
5491				"6": {
5492					"patterns": [
5493						{
5494							"match": "\\*\\/",
5495							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5496						},
5497						{
5498							"match": "\\*",
5499							"name": "comment.block.cpp"
5500						}
5501					]
5502				},
5503				"7": {
5504					"patterns": [
5505						{
5506							"include": "#inline_comment"
5507						}
5508					]
5509				},
5510				"8": {
5511					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5512				},
5513				"9": {
5514					"name": "comment.block.cpp"
5515				},
5516				"10": {
5517					"patterns": [
5518						{
5519							"match": "\\*\\/",
5520							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5521						},
5522						{
5523							"match": "\\*",
5524							"name": "comment.block.cpp"
5525						}
5526					]
5527				},
5528				"11": {
5529					"patterns": [
5530						{
5531							"match": "::",
5532							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
5533						},
5534						{
5535							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
5536							"name": "entity.name.scope-resolution.type.cpp"
5537						},
5538						{
5539							"include": "#template_call_range"
5540						}
5541					]
5542				},
5543				"12": {
5544					"patterns": [
5545						{
5546							"include": "#template_call_range"
5547						}
5548					]
5549				},
5550				"13": {},
5551				"14": {
5552					"patterns": [
5553						{
5554							"include": "#inline_comment"
5555						}
5556					]
5557				},
5558				"15": {
5559					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5560				},
5561				"16": {
5562					"name": "comment.block.cpp"
5563				},
5564				"17": {
5565					"patterns": [
5566						{
5567							"match": "\\*\\/",
5568							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5569						},
5570						{
5571							"match": "\\*",
5572							"name": "comment.block.cpp"
5573						}
5574					]
5575				},
5576				"18": {},
5577				"19": {
5578					"patterns": [
5579						{
5580							"match": "\\*",
5581							"name": "storage.modifier.pointer.cpp"
5582						},
5583						{
5584							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
5585							"captures": {
5586								"1": {
5587									"patterns": [
5588										{
5589											"include": "#inline_comment"
5590										}
5591									]
5592								},
5593								"2": {
5594									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5595								},
5596								"3": {
5597									"name": "comment.block.cpp"
5598								},
5599								"4": {
5600									"patterns": [
5601										{
5602											"match": "\\*\\/",
5603											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5604										},
5605										{
5606											"match": "\\*",
5607											"name": "comment.block.cpp"
5608										}
5609									]
5610								}
5611							},
5612							"name": "invalid.illegal.reference-type.cpp"
5613						},
5614						{
5615							"match": "\\&",
5616							"name": "storage.modifier.reference.cpp"
5617						}
5618					]
5619				},
5620				"20": {
5621					"patterns": [
5622						{
5623							"include": "#inline_comment"
5624						}
5625					]
5626				},
5627				"21": {
5628					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5629				},
5630				"22": {
5631					"name": "comment.block.cpp"
5632				},
5633				"23": {
5634					"patterns": [
5635						{
5636							"match": "\\*\\/",
5637							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5638						},
5639						{
5640							"match": "\\*",
5641							"name": "comment.block.cpp"
5642						}
5643					]
5644				},
5645				"24": {
5646					"patterns": [
5647						{
5648							"include": "#inline_comment"
5649						}
5650					]
5651				},
5652				"25": {
5653					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5654				},
5655				"26": {
5656					"name": "comment.block.cpp"
5657				},
5658				"27": {
5659					"patterns": [
5660						{
5661							"match": "\\*\\/",
5662							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5663						},
5664						{
5665							"match": "\\*",
5666							"name": "comment.block.cpp"
5667						}
5668					]
5669				},
5670				"28": {
5671					"patterns": [
5672						{
5673							"include": "#inline_comment"
5674						}
5675					]
5676				},
5677				"29": {
5678					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5679				},
5680				"30": {
5681					"name": "comment.block.cpp"
5682				},
5683				"31": {
5684					"patterns": [
5685						{
5686							"match": "\\*\\/",
5687							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5688						},
5689						{
5690							"match": "\\*",
5691							"name": "comment.block.cpp"
5692						}
5693					]
5694				},
5695				"32": {
5696					"name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
5697				},
5698				"33": {
5699					"name": "punctuation.definition.function.pointer.dereference.cpp"
5700				},
5701				"34": {
5702					"name": "variable.other.definition.pointer.function.cpp"
5703				},
5704				"35": {
5705					"name": "punctuation.definition.begin.bracket.square.cpp"
5706				},
5707				"36": {
5708					"patterns": [
5709						{
5710							"include": "#evaluation_context"
5711						}
5712					]
5713				},
5714				"37": {
5715					"name": "punctuation.definition.end.bracket.square.cpp"
5716				},
5717				"38": {
5718					"name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
5719				},
5720				"39": {
5721					"name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
5722				}
5723			},
5724			"endCaptures": {
5725				"1": {
5726					"name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
5727				},
5728				"2": {
5729					"patterns": [
5730						{
5731							"include": "#inline_comment"
5732						}
5733					]
5734				},
5735				"3": {
5736					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5737				},
5738				"4": {
5739					"name": "comment.block.cpp"
5740				},
5741				"5": {
5742					"patterns": [
5743						{
5744							"match": "\\*\\/",
5745							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5746						},
5747						{
5748							"match": "\\*",
5749							"name": "comment.block.cpp"
5750						}
5751					]
5752				}
5753			},
5754			"patterns": [
5755				{
5756					"include": "#function_parameter_context"
5757				}
5758			]
5759		},
5760		"function_pointer_parameter": {
5761			"begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()(\\*)(?:(?:\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\s)+)?(?:(\\[)(\\w*)(\\])(?:(?:\\s)+)?)*(\\))(?:(?:\\s)+)?(\\()",
5762			"end": "(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()",
5763			"beginCaptures": {
5764				"1": {
5765					"name": "meta.qualified_type.cpp",
5766					"patterns": [
5767						{
5768							"match": "::",
5769							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
5770						},
5771						{
5772							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
5773							"name": "storage.type.$0.cpp"
5774						},
5775						{
5776							"include": "#attributes_context"
5777						},
5778						{
5779							"include": "#storage_types"
5780						},
5781						{
5782							"include": "#number_literal"
5783						},
5784						{
5785							"include": "#string_context"
5786						},
5787						{
5788							"include": "#comma"
5789						},
5790						{
5791							"include": "#scope_resolution_inner_generated"
5792						},
5793						{
5794							"begin": "<",
5795							"end": ">",
5796							"beginCaptures": {
5797								"0": {
5798									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
5799								}
5800							},
5801							"endCaptures": {
5802								"0": {
5803									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
5804								}
5805							},
5806							"name": "meta.template.call.cpp",
5807							"patterns": [
5808								{
5809									"include": "#template_call_context"
5810								}
5811							]
5812						},
5813						{
5814							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
5815							"name": "entity.name.type.cpp"
5816						}
5817					]
5818				},
5819				"2": {
5820					"patterns": [
5821						{
5822							"include": "#attributes_context"
5823						},
5824						{
5825							"include": "#number_literal"
5826						}
5827					]
5828				},
5829				"3": {
5830					"patterns": [
5831						{
5832							"include": "#inline_comment"
5833						}
5834					]
5835				},
5836				"4": {
5837					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5838				},
5839				"5": {
5840					"name": "comment.block.cpp"
5841				},
5842				"6": {
5843					"patterns": [
5844						{
5845							"match": "\\*\\/",
5846							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5847						},
5848						{
5849							"match": "\\*",
5850							"name": "comment.block.cpp"
5851						}
5852					]
5853				},
5854				"7": {
5855					"patterns": [
5856						{
5857							"include": "#inline_comment"
5858						}
5859					]
5860				},
5861				"8": {
5862					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5863				},
5864				"9": {
5865					"name": "comment.block.cpp"
5866				},
5867				"10": {
5868					"patterns": [
5869						{
5870							"match": "\\*\\/",
5871							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5872						},
5873						{
5874							"match": "\\*",
5875							"name": "comment.block.cpp"
5876						}
5877					]
5878				},
5879				"11": {
5880					"patterns": [
5881						{
5882							"match": "::",
5883							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
5884						},
5885						{
5886							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
5887							"name": "entity.name.scope-resolution.type.cpp"
5888						},
5889						{
5890							"include": "#template_call_range"
5891						}
5892					]
5893				},
5894				"12": {
5895					"patterns": [
5896						{
5897							"include": "#template_call_range"
5898						}
5899					]
5900				},
5901				"13": {},
5902				"14": {
5903					"patterns": [
5904						{
5905							"include": "#inline_comment"
5906						}
5907					]
5908				},
5909				"15": {
5910					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5911				},
5912				"16": {
5913					"name": "comment.block.cpp"
5914				},
5915				"17": {
5916					"patterns": [
5917						{
5918							"match": "\\*\\/",
5919							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5920						},
5921						{
5922							"match": "\\*",
5923							"name": "comment.block.cpp"
5924						}
5925					]
5926				},
5927				"18": {},
5928				"19": {
5929					"patterns": [
5930						{
5931							"match": "\\*",
5932							"name": "storage.modifier.pointer.cpp"
5933						},
5934						{
5935							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
5936							"captures": {
5937								"1": {
5938									"patterns": [
5939										{
5940											"include": "#inline_comment"
5941										}
5942									]
5943								},
5944								"2": {
5945									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5946								},
5947								"3": {
5948									"name": "comment.block.cpp"
5949								},
5950								"4": {
5951									"patterns": [
5952										{
5953											"match": "\\*\\/",
5954											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5955										},
5956										{
5957											"match": "\\*",
5958											"name": "comment.block.cpp"
5959										}
5960									]
5961								}
5962							},
5963							"name": "invalid.illegal.reference-type.cpp"
5964						},
5965						{
5966							"match": "\\&",
5967							"name": "storage.modifier.reference.cpp"
5968						}
5969					]
5970				},
5971				"20": {
5972					"patterns": [
5973						{
5974							"include": "#inline_comment"
5975						}
5976					]
5977				},
5978				"21": {
5979					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
5980				},
5981				"22": {
5982					"name": "comment.block.cpp"
5983				},
5984				"23": {
5985					"patterns": [
5986						{
5987							"match": "\\*\\/",
5988							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
5989						},
5990						{
5991							"match": "\\*",
5992							"name": "comment.block.cpp"
5993						}
5994					]
5995				},
5996				"24": {
5997					"patterns": [
5998						{
5999							"include": "#inline_comment"
6000						}
6001					]
6002				},
6003				"25": {
6004					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6005				},
6006				"26": {
6007					"name": "comment.block.cpp"
6008				},
6009				"27": {
6010					"patterns": [
6011						{
6012							"match": "\\*\\/",
6013							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6014						},
6015						{
6016							"match": "\\*",
6017							"name": "comment.block.cpp"
6018						}
6019					]
6020				},
6021				"28": {
6022					"patterns": [
6023						{
6024							"include": "#inline_comment"
6025						}
6026					]
6027				},
6028				"29": {
6029					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6030				},
6031				"30": {
6032					"name": "comment.block.cpp"
6033				},
6034				"31": {
6035					"patterns": [
6036						{
6037							"match": "\\*\\/",
6038							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6039						},
6040						{
6041							"match": "\\*",
6042							"name": "comment.block.cpp"
6043						}
6044					]
6045				},
6046				"32": {
6047					"name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
6048				},
6049				"33": {
6050					"name": "punctuation.definition.function.pointer.dereference.cpp"
6051				},
6052				"34": {
6053					"name": "variable.parameter.pointer.function.cpp"
6054				},
6055				"35": {
6056					"name": "punctuation.definition.begin.bracket.square.cpp"
6057				},
6058				"36": {
6059					"patterns": [
6060						{
6061							"include": "#evaluation_context"
6062						}
6063					]
6064				},
6065				"37": {
6066					"name": "punctuation.definition.end.bracket.square.cpp"
6067				},
6068				"38": {
6069					"name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
6070				},
6071				"39": {
6072					"name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
6073				}
6074			},
6075			"endCaptures": {
6076				"1": {
6077					"name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
6078				},
6079				"2": {
6080					"patterns": [
6081						{
6082							"include": "#inline_comment"
6083						}
6084					]
6085				},
6086				"3": {
6087					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6088				},
6089				"4": {
6090					"name": "comment.block.cpp"
6091				},
6092				"5": {
6093					"patterns": [
6094						{
6095							"match": "\\*\\/",
6096							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6097						},
6098						{
6099							"match": "\\*",
6100							"name": "comment.block.cpp"
6101						}
6102					]
6103				}
6104			},
6105			"patterns": [
6106				{
6107					"include": "#function_parameter_context"
6108				}
6109			]
6110		},
6111		"functional_specifiers_pre_parameters": {
6112			"match": "(?<!\\w)(?:(?:constexpr)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))(?!\\w)",
6113			"name": "storage.modifier.specifier.functional.pre-parameters.$0.cpp"
6114		},
6115		"gcc_attributes": {
6116			"begin": "__attribute(?:__)?\\s*\\(\\s*\\(",
6117			"end": "\\)\\s*\\)",
6118			"beginCaptures": {
6119				"0": {
6120					"name": "punctuation.section.attribute.begin.cpp"
6121				}
6122			},
6123			"endCaptures": {
6124				"0": {
6125					"name": "punctuation.section.attribute.end.cpp"
6126				}
6127			},
6128			"name": "support.other.attribute.cpp",
6129			"patterns": [
6130				{
6131					"include": "#attributes_context"
6132				},
6133				{
6134					"begin": "\\(",
6135					"end": "\\)",
6136					"beginCaptures": {},
6137					"endCaptures": {},
6138					"patterns": [
6139						{
6140							"include": "#attributes_context"
6141						},
6142						{
6143							"include": "#string_context"
6144						}
6145					]
6146				},
6147				{
6148					"match": "(using)(?:\\s)+((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))",
6149					"captures": {
6150						"1": {
6151							"name": "keyword.other.using.directive.cpp"
6152						},
6153						"2": {
6154							"name": "entity.name.namespace.cpp"
6155						}
6156					}
6157				},
6158				{
6159					"match": ",",
6160					"name": "punctuation.separator.attribute.cpp"
6161				},
6162				{
6163					"match": ":",
6164					"name": "punctuation.accessor.attribute.cpp"
6165				},
6166				{
6167					"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)(?=::)",
6168					"name": "entity.name.namespace.cpp"
6169				},
6170				{
6171					"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
6172					"name": "entity.other.attribute.$0.cpp"
6173				},
6174				{
6175					"include": "#number_literal"
6176				}
6177			]
6178		},
6179		"goto_statement": {
6180			"match": "((?<!\\w)goto(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)",
6181			"captures": {
6182				"1": {
6183					"name": "keyword.control.goto.cpp"
6184				},
6185				"2": {
6186					"patterns": [
6187						{
6188							"include": "#inline_comment"
6189						}
6190					]
6191				},
6192				"3": {
6193					"patterns": [
6194						{
6195							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6196							"captures": {
6197								"1": {
6198									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6199								},
6200								"2": {
6201									"name": "comment.block.cpp"
6202								},
6203								"3": {
6204									"patterns": [
6205										{
6206											"match": "\\*\\/",
6207											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6208										},
6209										{
6210											"match": "\\*",
6211											"name": "comment.block.cpp"
6212										}
6213									]
6214								}
6215							}
6216						}
6217					]
6218				},
6219				"4": {
6220					"name": "entity.name.label.call.cpp"
6221				}
6222			}
6223		},
6224		"identifier": {
6225			"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*"
6226		},
6227		"include": {
6228			"match": "^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((#)(?:(?:\\s)+)?((?:include|include_next))\\b)(?:(?:\\s)+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/)))|((\\\")[^\\\"]*((?:\\\")?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=\\/\\/))))|(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\.(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)*((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;)))))|((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:\\n)|$)|(?=(?:\\/\\/|;))))",
6229			"captures": {
6230				"1": {
6231					"patterns": [
6232						{
6233							"include": "#inline_comment"
6234						}
6235					]
6236				},
6237				"2": {
6238					"patterns": [
6239						{
6240							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6241							"captures": {
6242								"1": {
6243									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6244								},
6245								"2": {
6246									"name": "comment.block.cpp"
6247								},
6248								"3": {
6249									"patterns": [
6250										{
6251											"match": "\\*\\/",
6252											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6253										},
6254										{
6255											"match": "\\*",
6256											"name": "comment.block.cpp"
6257										}
6258									]
6259								}
6260							}
6261						}
6262					]
6263				},
6264				"3": {
6265					"name": "keyword.control.directive.$5.cpp"
6266				},
6267				"4": {
6268					"name": "punctuation.definition.directive.cpp"
6269				},
6270				"6": {
6271					"name": "string.quoted.other.lt-gt.include.cpp"
6272				},
6273				"7": {
6274					"name": "punctuation.definition.string.begin.cpp"
6275				},
6276				"8": {
6277					"name": "punctuation.definition.string.end.cpp"
6278				},
6279				"9": {
6280					"patterns": [
6281						{
6282							"include": "#inline_comment"
6283						}
6284					]
6285				},
6286				"10": {
6287					"patterns": [
6288						{
6289							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6290							"captures": {
6291								"1": {
6292									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6293								},
6294								"2": {
6295									"name": "comment.block.cpp"
6296								},
6297								"3": {
6298									"patterns": [
6299										{
6300											"match": "\\*\\/",
6301											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6302										},
6303										{
6304											"match": "\\*",
6305											"name": "comment.block.cpp"
6306										}
6307									]
6308								}
6309							}
6310						}
6311					]
6312				},
6313				"11": {
6314					"name": "string.quoted.double.include.cpp"
6315				},
6316				"12": {
6317					"name": "punctuation.definition.string.begin.cpp"
6318				},
6319				"13": {
6320					"name": "punctuation.definition.string.end.cpp"
6321				},
6322				"14": {
6323					"patterns": [
6324						{
6325							"include": "#inline_comment"
6326						}
6327					]
6328				},
6329				"15": {
6330					"patterns": [
6331						{
6332							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6333							"captures": {
6334								"1": {
6335									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6336								},
6337								"2": {
6338									"name": "comment.block.cpp"
6339								},
6340								"3": {
6341									"patterns": [
6342										{
6343											"match": "\\*\\/",
6344											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6345										},
6346										{
6347											"match": "\\*",
6348											"name": "comment.block.cpp"
6349										}
6350									]
6351								}
6352							}
6353						}
6354					]
6355				},
6356				"16": {
6357					"name": "entity.name.other.preprocessor.macro.include.cpp"
6358				},
6359				"17": {
6360					"patterns": [
6361						{
6362							"include": "#inline_comment"
6363						}
6364					]
6365				},
6366				"18": {
6367					"patterns": [
6368						{
6369							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6370							"captures": {
6371								"1": {
6372									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6373								},
6374								"2": {
6375									"name": "comment.block.cpp"
6376								},
6377								"3": {
6378									"patterns": [
6379										{
6380											"match": "\\*\\/",
6381											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6382										},
6383										{
6384											"match": "\\*",
6385											"name": "comment.block.cpp"
6386										}
6387									]
6388								}
6389							}
6390						}
6391					]
6392				},
6393				"19": {
6394					"patterns": [
6395						{
6396							"include": "#inline_comment"
6397						}
6398					]
6399				},
6400				"20": {
6401					"patterns": [
6402						{
6403							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6404							"captures": {
6405								"1": {
6406									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6407								},
6408								"2": {
6409									"name": "comment.block.cpp"
6410								},
6411								"3": {
6412									"patterns": [
6413										{
6414											"match": "\\*\\/",
6415											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6416										},
6417										{
6418											"match": "\\*",
6419											"name": "comment.block.cpp"
6420										}
6421									]
6422								}
6423							}
6424						}
6425					]
6426				},
6427				"21": {
6428					"patterns": [
6429						{
6430							"include": "#inline_comment"
6431						}
6432					]
6433				},
6434				"22": {
6435					"patterns": [
6436						{
6437							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6438							"captures": {
6439								"1": {
6440									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6441								},
6442								"2": {
6443									"name": "comment.block.cpp"
6444								},
6445								"3": {
6446									"patterns": [
6447										{
6448											"match": "\\*\\/",
6449											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6450										},
6451										{
6452											"match": "\\*",
6453											"name": "comment.block.cpp"
6454										}
6455									]
6456								}
6457							}
6458						}
6459					]
6460				}
6461			},
6462			"name": "meta.preprocessor.include.cpp"
6463		},
6464		"inheritance_context": {
6465			"patterns": [
6466				{
6467					"include": "#ever_present_context"
6468				},
6469				{
6470					"match": ",",
6471					"name": "punctuation.separator.delimiter.comma.inheritance.cpp"
6472				},
6473				{
6474					"match": "(?<!\\w)(?:(?:protected)|(?:private)|(?:public))(?!\\w)",
6475					"name": "storage.type.modifier.access.$0.cpp"
6476				},
6477				{
6478					"match": "(?<!\\w)virtual(?!\\w)",
6479					"name": "storage.type.modifier.virtual.cpp"
6480				},
6481				{
6482					"match": "(?<=protected|virtual|private|public|,|:)(?:(?:\\s)+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)?(?![\\w<:.]))",
6483					"captures": {
6484						"1": {
6485							"name": "meta.qualified_type.cpp",
6486							"patterns": [
6487								{
6488									"match": "::",
6489									"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
6490								},
6491								{
6492									"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
6493									"name": "storage.type.$0.cpp"
6494								},
6495								{
6496									"include": "#attributes_context"
6497								},
6498								{
6499									"include": "#storage_types"
6500								},
6501								{
6502									"include": "#number_literal"
6503								},
6504								{
6505									"include": "#string_context"
6506								},
6507								{
6508									"include": "#comma"
6509								},
6510								{
6511									"include": "#scope_resolution_inner_generated"
6512								},
6513								{
6514									"begin": "<",
6515									"end": ">",
6516									"beginCaptures": {
6517										"0": {
6518											"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
6519										}
6520									},
6521									"endCaptures": {
6522										"0": {
6523											"name": "punctuation.section.angle-brackets.end.template.call.cpp"
6524										}
6525									},
6526									"name": "meta.template.call.cpp",
6527									"patterns": [
6528										{
6529											"include": "#template_call_context"
6530										}
6531									]
6532								},
6533								{
6534									"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
6535									"name": "entity.name.type.cpp"
6536								}
6537							]
6538						},
6539						"2": {
6540							"patterns": [
6541								{
6542									"include": "#attributes_context"
6543								},
6544								{
6545									"include": "#number_literal"
6546								}
6547							]
6548						},
6549						"3": {
6550							"patterns": [
6551								{
6552									"include": "#inline_comment"
6553								}
6554							]
6555						},
6556						"4": {
6557							"patterns": [
6558								{
6559									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6560									"captures": {
6561										"1": {
6562											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6563										},
6564										"2": {
6565											"name": "comment.block.cpp"
6566										},
6567										"3": {
6568											"patterns": [
6569												{
6570													"match": "\\*\\/",
6571													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6572												},
6573												{
6574													"match": "\\*",
6575													"name": "comment.block.cpp"
6576												}
6577											]
6578										}
6579									}
6580								}
6581							]
6582						},
6583						"5": {
6584							"patterns": [
6585								{
6586									"include": "#inline_comment"
6587								}
6588							]
6589						},
6590						"6": {
6591							"patterns": [
6592								{
6593									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6594									"captures": {
6595										"1": {
6596											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6597										},
6598										"2": {
6599											"name": "comment.block.cpp"
6600										},
6601										"3": {
6602											"patterns": [
6603												{
6604													"match": "\\*\\/",
6605													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6606												},
6607												{
6608													"match": "\\*",
6609													"name": "comment.block.cpp"
6610												}
6611											]
6612										}
6613									}
6614								}
6615							]
6616						},
6617						"7": {
6618							"patterns": [
6619								{
6620									"match": "::",
6621									"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
6622								},
6623								{
6624									"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
6625									"name": "entity.name.scope-resolution.type.cpp"
6626								},
6627								{
6628									"include": "#template_call_range"
6629								}
6630							]
6631						},
6632						"8": {
6633							"patterns": [
6634								{
6635									"include": "#template_call_range"
6636								}
6637							]
6638						},
6639						"9": {},
6640						"10": {
6641							"patterns": [
6642								{
6643									"include": "#inline_comment"
6644								}
6645							]
6646						},
6647						"11": {
6648							"patterns": [
6649								{
6650									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6651									"captures": {
6652										"1": {
6653											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6654										},
6655										"2": {
6656											"name": "comment.block.cpp"
6657										},
6658										"3": {
6659											"patterns": [
6660												{
6661													"match": "\\*\\/",
6662													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6663												},
6664												{
6665													"match": "\\*",
6666													"name": "comment.block.cpp"
6667												}
6668											]
6669										}
6670									}
6671								}
6672							]
6673						},
6674						"12": {}
6675					}
6676				}
6677			]
6678		},
6679		"inline_builtin_storage_type": {
6680			"match": "(?:\\s)*+(?<!\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:double)|(?:signed)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:long)|(?:char)|(?:bool)|(?:int)))|((?:(?:uint_least32_t)|(?:uint_least64_t)|(?:uint_least16_t)|(?:uint_fast64_t)|(?:uint_least8_t)|(?:int_least64_t)|(?:int_least32_t)|(?:int_least16_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:int_fast8_t)|(?:suseconds_t)|(?:useconds_t)|(?:uintmax_t)|(?:uintmax_t)|(?:in_port_t)|(?:uintmax_t)|(?:in_addr_t)|(?:blksize_t)|(?:uintptr_t)|(?:intmax_t)|(?:intptr_t)|(?:blkcnt_t)|(?:intmax_t)|(?:u_quad_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:ssize_t)|(?:fixpt_t)|(?:qaddr_t)|(?:u_short)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:daddr_t)|(?:caddr_t)|(?:swblk_t)|(?:clock_t)|(?:segsz_t)|(?:nlink_t)|(?:time_t)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:u_char)|(?:int8_t)|(?:u_int)|(?:uid_t)|(?:off_t)|(?:pid_t)|(?:gid_t)|(?:dev_t)|(?:div_t)|(?:key_t)|(?:ino_t)|(?:id_t)|(?:id_t)|(?:uint))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_cond_t)|(?:pthread_attr_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\w)*_t))(?!\\w)",
6681			"captures": {
6682				"1": {
6683					"name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
6684				},
6685				"2": {
6686					"name": "storage.type.cpp storage.type.built-in.cpp"
6687				},
6688				"3": {
6689					"name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
6690				},
6691				"4": {
6692					"name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
6693				}
6694			}
6695		},
6696		"inline_comment": {
6697			"match": "(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/))",
6698			"captures": {
6699				"1": {
6700					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6701				},
6702				"2": {
6703					"name": "comment.block.cpp"
6704				},
6705				"3": {
6706					"patterns": [
6707						{
6708							"match": "\\*\\/",
6709							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6710						},
6711						{
6712							"match": "\\*",
6713							"name": "comment.block.cpp"
6714						}
6715					]
6716				}
6717			}
6718		},
6719		"invalid_comment_end": {
6720			"match": "\\*\\/",
6721			"name": "invalid.illegal.unexpected.punctuation.definition.comment.end.cpp"
6722		},
6723		"label": {
6724			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\b(?<!case|default)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:)",
6725			"captures": {
6726				"1": {
6727					"patterns": [
6728						{
6729							"include": "#inline_comment"
6730						}
6731					]
6732				},
6733				"2": {
6734					"patterns": [
6735						{
6736							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6737							"captures": {
6738								"1": {
6739									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6740								},
6741								"2": {
6742									"name": "comment.block.cpp"
6743								},
6744								"3": {
6745									"patterns": [
6746										{
6747											"match": "\\*\\/",
6748											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6749										},
6750										{
6751											"match": "\\*",
6752											"name": "comment.block.cpp"
6753										}
6754									]
6755								}
6756							}
6757						}
6758					]
6759				},
6760				"3": {
6761					"name": "entity.name.label.cpp"
6762				},
6763				"4": {
6764					"patterns": [
6765						{
6766							"include": "#inline_comment"
6767						}
6768					]
6769				},
6770				"5": {
6771					"patterns": [
6772						{
6773							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
6774							"captures": {
6775								"1": {
6776									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6777								},
6778								"2": {
6779									"name": "comment.block.cpp"
6780								},
6781								"3": {
6782									"patterns": [
6783										{
6784											"match": "\\*\\/",
6785											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6786										},
6787										{
6788											"match": "\\*",
6789											"name": "comment.block.cpp"
6790										}
6791									]
6792								}
6793							}
6794						}
6795					]
6796				},
6797				"6": {
6798					"name": "punctuation.separator.label.cpp"
6799				}
6800			}
6801		},
6802		"lambdas": {
6803			"begin": "(?:(?<=[^\\s]|^)(?<![\\w\\]\\)\\[\\*&\">])|(?<=\\Wreturn|^return))(?:(?:\\s)+)?(\\[(?!\\[| *+\"| *+\\d))((?:[^\\[\\]]|((?<!\\[)\\[(?!\\[)(?:[^\\[\\]]*+\\g<3>?)++\\]))*+)(\\](?!((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))[\\[\\];]))",
6804			"end": "(?<=[;}])",
6805			"beginCaptures": {
6806				"1": {
6807					"name": "punctuation.definition.capture.begin.lambda.cpp"
6808				},
6809				"2": {
6810					"name": "meta.lambda.capture.cpp",
6811					"patterns": [
6812						{
6813							"include": "#the_this_keyword"
6814						},
6815						{
6816							"match": "((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?=\\]|\\z|$)|(,))|(\\=))",
6817							"captures": {
6818								"1": {
6819									"name": "variable.parameter.capture.cpp"
6820								},
6821								"2": {
6822									"patterns": [
6823										{
6824											"include": "#inline_comment"
6825										}
6826									]
6827								},
6828								"3": {
6829									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6830								},
6831								"4": {
6832									"name": "comment.block.cpp"
6833								},
6834								"5": {
6835									"patterns": [
6836										{
6837											"match": "\\*\\/",
6838											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6839										},
6840										{
6841											"match": "\\*",
6842											"name": "comment.block.cpp"
6843										}
6844									]
6845								},
6846								"6": {
6847									"name": "punctuation.separator.delimiter.comma.cpp"
6848								},
6849								"7": {
6850									"name": "keyword.operator.assignment.cpp"
6851								}
6852							}
6853						},
6854						{
6855							"include": "#evaluation_context"
6856						}
6857					]
6858				},
6859				"3": {},
6860				"4": {
6861					"name": "punctuation.definition.capture.end.lambda.cpp"
6862				},
6863				"5": {
6864					"patterns": [
6865						{
6866							"include": "#inline_comment"
6867						}
6868					]
6869				},
6870				"6": {
6871					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6872				},
6873				"7": {
6874					"name": "comment.block.cpp"
6875				},
6876				"8": {
6877					"patterns": [
6878						{
6879							"match": "\\*\\/",
6880							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6881						},
6882						{
6883							"match": "\\*",
6884							"name": "comment.block.cpp"
6885						}
6886					]
6887				}
6888			},
6889			"endCaptures": {},
6890			"patterns": [
6891				{
6892					"begin": "\\(",
6893					"end": "\\)",
6894					"beginCaptures": {
6895						"0": {
6896							"name": "punctuation.definition.parameters.begin.lambda.cpp"
6897						}
6898					},
6899					"endCaptures": {
6900						"0": {
6901							"name": "punctuation.definition.parameters.end.lambda.cpp"
6902						}
6903					},
6904					"name": "meta.function.definition.parameters.lambda.cpp",
6905					"patterns": [
6906						{
6907							"include": "#function_parameter_context"
6908						}
6909					]
6910				},
6911				{
6912					"match": "(?<!\\w)(?:(?:constexpr)|(?:consteval)|(?:mutable))(?!\\w)",
6913					"name": "storage.modifier.lambda.$0.cpp"
6914				},
6915				{
6916					"match": "(->)((?:.+?(?=\\{|$))?)",
6917					"captures": {
6918						"1": {
6919							"name": "punctuation.definition.lambda.return-type.cpp"
6920						},
6921						"2": {
6922							"name": "storage.type.return-type.lambda.cpp"
6923						}
6924					}
6925				},
6926				{
6927					"begin": "\\{",
6928					"end": "\\}",
6929					"beginCaptures": {
6930						"0": {
6931							"name": "punctuation.section.block.begin.bracket.curly.lambda.cpp"
6932						}
6933					},
6934					"endCaptures": {
6935						"0": {
6936							"name": "punctuation.section.block.end.bracket.curly.lambda.cpp"
6937						}
6938					},
6939					"name": "meta.function.definition.body.lambda.cpp",
6940					"patterns": [
6941						{
6942							"include": "$self"
6943						}
6944					]
6945				}
6946			]
6947		},
6948		"language_constants": {
6949			"match": "(?<!\\w)(?:(?:nullptr)|(?:false)|(?:NULL)|(?:true))(?!\\w)",
6950			"name": "constant.language.$0.cpp"
6951		},
6952		"line": {
6953			"begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?line\\b",
6954			"end": "(?<!\\\\)(?=\\n)",
6955			"beginCaptures": {
6956				"0": {
6957					"name": "keyword.control.directive.line.cpp"
6958				},
6959				"1": {
6960					"patterns": [
6961						{
6962							"include": "#inline_comment"
6963						}
6964					]
6965				},
6966				"2": {
6967					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
6968				},
6969				"3": {
6970					"name": "comment.block.cpp"
6971				},
6972				"4": {
6973					"patterns": [
6974						{
6975							"match": "\\*\\/",
6976							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
6977						},
6978						{
6979							"match": "\\*",
6980							"name": "comment.block.cpp"
6981						}
6982					]
6983				},
6984				"5": {
6985					"name": "punctuation.definition.directive.cpp"
6986				}
6987			},
6988			"endCaptures": {},
6989			"name": "meta.preprocessor.line.cpp",
6990			"patterns": [
6991				{
6992					"include": "#string_context"
6993				},
6994				{
6995					"include": "#preprocessor_number_literal"
6996				},
6997				{
6998					"include": "#line_continuation_character"
6999				}
7000			]
7001		},
7002		"line_comment": {
7003			"begin": "\\s*+(\\/\\/)",
7004			"end": "(?<=\\n)(?<!\\\\\\n)",
7005			"beginCaptures": {
7006				"1": {
7007					"name": "punctuation.definition.comment.cpp"
7008				}
7009			},
7010			"endCaptures": {},
7011			"name": "comment.line.double-slash.cpp",
7012			"patterns": [
7013				{
7014					"include": "#line_continuation_character"
7015				}
7016			]
7017		},
7018		"line_continuation_character": {
7019			"match": "\\\\\\n",
7020			"name": "constant.character.escape.line-continuation.cpp"
7021		},
7022		"macro": {
7023			"begin": "(^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?define\\b)(?:(?:\\s)+)?((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))",
7024			"end": "(?<!\\\\)(?=\\n)",
7025			"beginCaptures": {
7026				"1": {
7027					"name": "keyword.control.directive.define.cpp"
7028				},
7029				"2": {
7030					"patterns": [
7031						{
7032							"include": "#inline_comment"
7033						}
7034					]
7035				},
7036				"3": {
7037					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7038				},
7039				"4": {
7040					"name": "comment.block.cpp"
7041				},
7042				"5": {
7043					"patterns": [
7044						{
7045							"match": "\\*\\/",
7046							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7047						},
7048						{
7049							"match": "\\*",
7050							"name": "comment.block.cpp"
7051						}
7052					]
7053				},
7054				"6": {
7055					"name": "punctuation.definition.directive.cpp"
7056				},
7057				"7": {
7058					"name": "entity.name.function.preprocessor.cpp"
7059				}
7060			},
7061			"endCaptures": {},
7062			"name": "meta.preprocessor.macro.cpp",
7063			"patterns": [
7064				{
7065					"match": "\\G(?:(?:\\s)+)?(\\()([^\\(]*)(\\))",
7066					"captures": {
7067						"1": {
7068							"name": "punctuation.definition.parameters.begin.preprocessor.cpp"
7069						},
7070						"2": {
7071							"patterns": [
7072								{
7073									"match": "(?<=[(,])(?:(?:\\s)+)?((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\s)+)?",
7074									"captures": {
7075										"1": {
7076											"name": "variable.parameter.preprocessor.cpp"
7077										}
7078									}
7079								},
7080								{
7081									"match": ",",
7082									"name": "punctuation.separator.parameters.cpp"
7083								},
7084								{
7085									"match": "\\.\\.\\.",
7086									"name": "punctuation.vararg-ellipses.variable.parameter.preprocessor.cpp"
7087								}
7088							]
7089						},
7090						"3": {
7091							"name": "punctuation.definition.parameters.end.preprocessor.cpp"
7092						}
7093					}
7094				},
7095				{
7096					"include": "#macro_context"
7097				},
7098				{
7099					"include": "#macro_argument"
7100				}
7101			]
7102		},
7103		"macro_argument": {
7104			"match": "##?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
7105			"name": "variable.other.macro.argument.cpp"
7106		},
7107		"macro_context": {
7108			"patterns": [
7109				{
7110					"include": "source.cpp.embedded.macro"
7111				}
7112			]
7113		},
7114		"macro_name": {
7115			"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
7116			"name": "entity.name.function.preprocessor.cpp"
7117		},
7118		"member_access": {
7119			"match": "(?:((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)this(?!\\w))|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*|(?<=\\]|\\)))(?:(?:\\s)+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:(?:\\s)+)?(?:(?:\\.\\*|\\.)|(?:->\\*|->))(?:(?:\\s)+)?)*)(?:(?:\\s)+)?(\\b(?!uint_least32_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint_least16_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint_least64_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int_least32_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int_least64_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint_fast32_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint_fast64_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint_least8_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint_fast16_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int_least16_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int_fast16_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int_least8_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint_fast8_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int_fast64_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int_fast32_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int_fast8_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|suseconds_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|useconds_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|in_addr_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uintmax_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uintmax_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uintmax_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|in_port_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uintptr_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|blksize_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint32_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint64_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|u_quad_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|intmax_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|intmax_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|unsigned[^Pattern.new(\n  match: \\/\\w\\/,\n)]|blkcnt_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint16_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|intptr_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|swblk_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|wchar_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|u_short[^Pattern.new(\n  match: \\/\\w\\/,\n)]|qaddr_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|caddr_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|daddr_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|fixpt_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|nlink_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|segsz_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|clock_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|ssize_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int16_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int32_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int64_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint8_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int8_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|mode_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|quad_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|ushort[^Pattern.new(\n  match: \\/\\w\\/,\n)]|u_long[^Pattern.new(\n  match: \\/\\w\\/,\n)]|u_char[^Pattern.new(\n  match: \\/\\w\\/,\n)]|double[^Pattern.new(\n  match: \\/\\w\\/,\n)]|signed[^Pattern.new(\n  match: \\/\\w\\/,\n)]|time_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|size_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|key_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|div_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|ino_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uid_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|gid_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|off_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|pid_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|float[^Pattern.new(\n  match: \\/\\w\\/,\n)]|dev_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|u_int[^Pattern.new(\n  match: \\/\\w\\/,\n)]|short[^Pattern.new(\n  match: \\/\\w\\/,\n)]|bool[^Pattern.new(\n  match: \\/\\w\\/,\n)]|id_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|uint[^Pattern.new(\n  match: \\/\\w\\/,\n)]|long[^Pattern.new(\n  match: \\/\\w\\/,\n)]|char[^Pattern.new(\n  match: \\/\\w\\/,\n)]|void[^Pattern.new(\n  match: \\/\\w\\/,\n)]|auto[^Pattern.new(\n  match: \\/\\w\\/,\n)]|id_t[^Pattern.new(\n  match: \\/\\w\\/,\n)]|int[^Pattern.new(\n  match: \\/\\w\\/,\n)])(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?!\\())",
7120			"captures": {
7121				"1": {
7122					"patterns": [
7123						{
7124							"include": "#inline_comment"
7125						}
7126					]
7127				},
7128				"2": {
7129					"patterns": [
7130						{
7131							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
7132							"captures": {
7133								"1": {
7134									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7135								},
7136								"2": {
7137									"name": "comment.block.cpp"
7138								},
7139								"3": {
7140									"patterns": [
7141										{
7142											"match": "\\*\\/",
7143											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7144										},
7145										{
7146											"match": "\\*",
7147											"name": "comment.block.cpp"
7148										}
7149									]
7150								}
7151							}
7152						}
7153					]
7154				},
7155				"3": {
7156					"name": "variable.language.this.cpp"
7157				},
7158				"4": {
7159					"name": "variable.other.object.access.cpp"
7160				},
7161				"5": {
7162					"name": "punctuation.separator.dot-access.cpp"
7163				},
7164				"6": {
7165					"name": "punctuation.separator.pointer-access.cpp"
7166				},
7167				"7": {
7168					"patterns": [
7169						{
7170							"match": "(?<=(?:\\.\\*|\\.|->|->\\*))(?:(?:\\s)+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)this(?!\\w))|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*|(?<=\\]|\\)))(?:(?:\\s)+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
7171							"captures": {
7172								"1": {
7173									"patterns": [
7174										{
7175											"include": "#inline_comment"
7176										}
7177									]
7178								},
7179								"2": {
7180									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7181								},
7182								"3": {
7183									"name": "comment.block.cpp"
7184								},
7185								"4": {
7186									"patterns": [
7187										{
7188											"match": "\\*\\/",
7189											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7190										},
7191										{
7192											"match": "\\*",
7193											"name": "comment.block.cpp"
7194										}
7195									]
7196								},
7197								"5": {
7198									"name": "variable.language.this.cpp"
7199								},
7200								"6": {
7201									"name": "variable.other.object.property.cpp"
7202								},
7203								"7": {
7204									"name": "punctuation.separator.dot-access.cpp"
7205								},
7206								"8": {
7207									"name": "punctuation.separator.pointer-access.cpp"
7208								}
7209							}
7210						},
7211						{
7212							"match": "(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)this(?!\\w))|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*|(?<=\\]|\\)))(?:(?:\\s)+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
7213							"captures": {
7214								"1": {
7215									"patterns": [
7216										{
7217											"include": "#inline_comment"
7218										}
7219									]
7220								},
7221								"2": {
7222									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7223								},
7224								"3": {
7225									"name": "comment.block.cpp"
7226								},
7227								"4": {
7228									"patterns": [
7229										{
7230											"match": "\\*\\/",
7231											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7232										},
7233										{
7234											"match": "\\*",
7235											"name": "comment.block.cpp"
7236										}
7237									]
7238								},
7239								"5": {
7240									"name": "variable.language.this.cpp"
7241								},
7242								"6": {
7243									"name": "variable.other.object.access.cpp"
7244								},
7245								"7": {
7246									"name": "punctuation.separator.dot-access.cpp"
7247								},
7248								"8": {
7249									"name": "punctuation.separator.pointer-access.cpp"
7250								}
7251							}
7252						},
7253						{
7254							"include": "#member_access"
7255						},
7256						{
7257							"include": "#method_access"
7258						}
7259					]
7260				},
7261				"8": {
7262					"name": "variable.other.property.cpp"
7263				}
7264			}
7265		},
7266		"memory_operators": {
7267			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(delete)(?:(?:\\s)+)?(\\[\\])|(delete))|(new))(?!\\w))",
7268			"captures": {
7269				"1": {
7270					"patterns": [
7271						{
7272							"include": "#inline_comment"
7273						}
7274					]
7275				},
7276				"2": {
7277					"patterns": [
7278						{
7279							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
7280							"captures": {
7281								"1": {
7282									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7283								},
7284								"2": {
7285									"name": "comment.block.cpp"
7286								},
7287								"3": {
7288									"patterns": [
7289										{
7290											"match": "\\*\\/",
7291											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7292										},
7293										{
7294											"match": "\\*",
7295											"name": "comment.block.cpp"
7296										}
7297									]
7298								}
7299							}
7300						}
7301					]
7302				},
7303				"3": {
7304					"name": "keyword.operator.wordlike.cpp"
7305				},
7306				"4": {
7307					"name": "keyword.operator.delete.array.cpp"
7308				},
7309				"5": {
7310					"name": "keyword.operator.delete.array.bracket.cpp"
7311				},
7312				"6": {
7313					"name": "keyword.operator.delete.cpp"
7314				},
7315				"7": {
7316					"name": "keyword.operator.new.cpp"
7317				}
7318			}
7319		},
7320		"method_access": {
7321			"begin": "(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)this(?!\\w))|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*|(?<=\\]|\\)))(?:(?:\\s)+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:(?:\\s)+)?(?:(?:\\.\\*|\\.)|(?:->\\*|->))(?:(?:\\s)+)?)*)(?:(?:\\s)+)?(~?(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\s)+)?(\\()",
7322			"end": "\\)",
7323			"beginCaptures": {
7324				"1": {
7325					"patterns": [
7326						{
7327							"include": "#inline_comment"
7328						}
7329					]
7330				},
7331				"2": {
7332					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7333				},
7334				"3": {
7335					"name": "comment.block.cpp"
7336				},
7337				"4": {
7338					"patterns": [
7339						{
7340							"match": "\\*\\/",
7341							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7342						},
7343						{
7344							"match": "\\*",
7345							"name": "comment.block.cpp"
7346						}
7347					]
7348				},
7349				"5": {
7350					"name": "variable.language.this.cpp"
7351				},
7352				"6": {
7353					"name": "variable.other.object.access.cpp"
7354				},
7355				"7": {
7356					"name": "punctuation.separator.dot-access.cpp"
7357				},
7358				"8": {
7359					"name": "punctuation.separator.pointer-access.cpp"
7360				},
7361				"9": {
7362					"patterns": [
7363						{
7364							"match": "(?<=(?:\\.\\*|\\.|->|->\\*))(?:(?:\\s)+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)this(?!\\w))|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*|(?<=\\]|\\)))(?:(?:\\s)+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
7365							"captures": {
7366								"1": {
7367									"patterns": [
7368										{
7369											"include": "#inline_comment"
7370										}
7371									]
7372								},
7373								"2": {
7374									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7375								},
7376								"3": {
7377									"name": "comment.block.cpp"
7378								},
7379								"4": {
7380									"patterns": [
7381										{
7382											"match": "\\*\\/",
7383											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7384										},
7385										{
7386											"match": "\\*",
7387											"name": "comment.block.cpp"
7388										}
7389									]
7390								},
7391								"5": {
7392									"name": "variable.language.this.cpp"
7393								},
7394								"6": {
7395									"name": "variable.other.object.property.cpp"
7396								},
7397								"7": {
7398									"name": "punctuation.separator.dot-access.cpp"
7399								},
7400								"8": {
7401									"name": "punctuation.separator.pointer-access.cpp"
7402								}
7403							}
7404						},
7405						{
7406							"match": "(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)this(?!\\w))|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*|(?<=\\]|\\)))(?:(?:\\s)+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
7407							"captures": {
7408								"1": {
7409									"patterns": [
7410										{
7411											"include": "#inline_comment"
7412										}
7413									]
7414								},
7415								"2": {
7416									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7417								},
7418								"3": {
7419									"name": "comment.block.cpp"
7420								},
7421								"4": {
7422									"patterns": [
7423										{
7424											"match": "\\*\\/",
7425											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7426										},
7427										{
7428											"match": "\\*",
7429											"name": "comment.block.cpp"
7430										}
7431									]
7432								},
7433								"5": {
7434									"name": "variable.language.this.cpp"
7435								},
7436								"6": {
7437									"name": "variable.other.object.access.cpp"
7438								},
7439								"7": {
7440									"name": "punctuation.separator.dot-access.cpp"
7441								},
7442								"8": {
7443									"name": "punctuation.separator.pointer-access.cpp"
7444								}
7445							}
7446						},
7447						{
7448							"include": "#member_access"
7449						},
7450						{
7451							"include": "#method_access"
7452						}
7453					]
7454				},
7455				"10": {
7456					"name": "entity.name.function.member.cpp"
7457				},
7458				"11": {
7459					"name": "punctuation.section.arguments.begin.bracket.round.function.member.cpp"
7460				}
7461			},
7462			"endCaptures": {
7463				"0": {
7464					"name": "punctuation.section.arguments.end.bracket.round.function.member.cpp"
7465				}
7466			},
7467			"patterns": [
7468				{
7469					"include": "#evaluation_context"
7470				}
7471			]
7472		},
7473		"misc_keywords": {
7474			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:(?:requires)|(?:typedef)|(?:concept)|(?:export)|(?:module))(?!\\w))",
7475			"captures": {
7476				"1": {
7477					"patterns": [
7478						{
7479							"include": "#inline_comment"
7480						}
7481					]
7482				},
7483				"2": {
7484					"patterns": [
7485						{
7486							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
7487							"captures": {
7488								"1": {
7489									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7490								},
7491								"2": {
7492									"name": "comment.block.cpp"
7493								},
7494								"3": {
7495									"patterns": [
7496										{
7497											"match": "\\*\\/",
7498											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7499										},
7500										{
7501											"match": "\\*",
7502											"name": "comment.block.cpp"
7503										}
7504									]
7505								}
7506							}
7507						}
7508					]
7509				},
7510				"3": {
7511					"name": "keyword.other.$3.cpp"
7512				}
7513			}
7514		},
7515		"ms_attributes": {
7516			"begin": "__declspec\\(",
7517			"end": "\\)",
7518			"beginCaptures": {
7519				"0": {
7520					"name": "punctuation.section.attribute.begin.cpp"
7521				}
7522			},
7523			"endCaptures": {
7524				"0": {
7525					"name": "punctuation.section.attribute.end.cpp"
7526				}
7527			},
7528			"name": "support.other.attribute.cpp",
7529			"patterns": [
7530				{
7531					"include": "#attributes_context"
7532				},
7533				{
7534					"begin": "\\(",
7535					"end": "\\)",
7536					"beginCaptures": {},
7537					"endCaptures": {},
7538					"patterns": [
7539						{
7540							"include": "#attributes_context"
7541						},
7542						{
7543							"include": "#string_context"
7544						}
7545					]
7546				},
7547				{
7548					"match": "(using)(?:\\s)+((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))",
7549					"captures": {
7550						"1": {
7551							"name": "keyword.other.using.directive.cpp"
7552						},
7553						"2": {
7554							"name": "entity.name.namespace.cpp"
7555						}
7556					}
7557				},
7558				{
7559					"match": ",",
7560					"name": "punctuation.separator.attribute.cpp"
7561				},
7562				{
7563					"match": ":",
7564					"name": "punctuation.accessor.attribute.cpp"
7565				},
7566				{
7567					"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)(?=::)",
7568					"name": "entity.name.namespace.cpp"
7569				},
7570				{
7571					"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
7572					"name": "entity.other.attribute.$0.cpp"
7573				},
7574				{
7575					"include": "#number_literal"
7576				}
7577			]
7578		},
7579		"namespace_alias": {
7580			"match": "(?<!\\w)(namespace)(?:\\s)+((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(?:(?:\\s)+)?(\\=)(?:(?:\\s)+)?(((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<8>?)+>)(?:\\s)*+)?::)*\\s*+)(?:(?:\\s)+)?((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(?:(?:\\s)+)?(?:(;)|\\n))",
7581			"captures": {
7582				"1": {
7583					"name": "keyword.other.namespace.alias.cpp storage.type.namespace.alias.cpp"
7584				},
7585				"2": {
7586					"name": "entity.name.namespace.alias.cpp"
7587				},
7588				"3": {
7589					"name": "keyword.operator.assignment.cpp"
7590				},
7591				"4": {
7592					"name": "meta.declaration.namespace.alias.value.cpp"
7593				},
7594				"5": {
7595					"patterns": [
7596						{
7597							"include": "#scope_resolution_namespace_alias_inner_generated"
7598						}
7599					]
7600				},
7601				"6": {
7602					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
7603				},
7604				"7": {
7605					"patterns": [
7606						{
7607							"include": "#template_call_range"
7608						}
7609					]
7610				},
7611				"9": {
7612					"name": "entity.name.namespace.cpp"
7613				},
7614				"10": {
7615					"name": "punctuation.terminator.statement.cpp"
7616				}
7617			},
7618			"name": "meta.declaration.namespace.alias.cpp"
7619		},
7620		"namespace_block": {
7621			"begin": "((?<!\\w)namespace(?!\\w))",
7622			"end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
7623			"beginCaptures": {
7624				"0": {
7625					"name": "meta.head.namespace.cpp"
7626				},
7627				"1": {
7628					"name": "keyword.other.namespace.definition.cpp storage.type.namespace.definition.cpp"
7629				}
7630			},
7631			"endCaptures": {},
7632			"name": "meta.block.namespace.cpp",
7633			"patterns": [
7634				{
7635					"begin": "\\G ?",
7636					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
7637					"beginCaptures": {},
7638					"endCaptures": {
7639						"0": {
7640							"name": "punctuation.section.block.begin.bracket.curly.namespace.cpp"
7641						}
7642					},
7643					"name": "meta.head.namespace.cpp",
7644					"patterns": [
7645						{
7646							"include": "#ever_present_context"
7647						},
7648						{
7649							"include": "#attributes_context"
7650						},
7651						{
7652							"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<4>?)+>)(?:\\s)*+)?::)*\\s*+)(?:(?:\\s)+)?((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(?:(?:\\s)+)?(?:(::)(?:(?:\\s)+)?(inline))?",
7653							"captures": {
7654								"1": {
7655									"patterns": [
7656										{
7657											"include": "#scope_resolution_namespace_block_inner_generated"
7658										}
7659									]
7660								},
7661								"2": {
7662									"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
7663								},
7664								"3": {
7665									"patterns": [
7666										{
7667											"include": "#template_call_range"
7668										}
7669									]
7670								},
7671								"4": {},
7672								"5": {
7673									"name": "entity.name.namespace.cpp"
7674								},
7675								"6": {
7676									"name": "punctuation.separator.scope-resolution.namespace.block.cpp"
7677								},
7678								"7": {
7679									"name": "storage.modifier.inline.cpp"
7680								}
7681							}
7682						}
7683					]
7684				},
7685				{
7686					"begin": "(?<=\\{|<%|\\?\\?<)",
7687					"end": "\\}|%>|\\?\\?>",
7688					"beginCaptures": {},
7689					"endCaptures": {
7690						"0": {
7691							"name": "punctuation.section.block.end.bracket.curly.namespace.cpp"
7692						}
7693					},
7694					"name": "meta.body.namespace.cpp",
7695					"patterns": [
7696						{
7697							"include": "$self"
7698						}
7699					]
7700				},
7701				{
7702					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
7703					"end": "[\\s]*(?=;)",
7704					"beginCaptures": {},
7705					"endCaptures": {},
7706					"name": "meta.tail.namespace.cpp",
7707					"patterns": [
7708						{
7709							"include": "$self"
7710						}
7711					]
7712				}
7713			]
7714		},
7715		"noexcept_operator": {
7716			"begin": "((?<!\\w)noexcept(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
7717			"end": "\\)",
7718			"beginCaptures": {
7719				"1": {
7720					"name": "keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp"
7721				},
7722				"2": {
7723					"patterns": [
7724						{
7725							"include": "#inline_comment"
7726						}
7727					]
7728				},
7729				"3": {
7730					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
7731				},
7732				"4": {
7733					"name": "comment.block.cpp"
7734				},
7735				"5": {
7736					"patterns": [
7737						{
7738							"match": "\\*\\/",
7739							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
7740						},
7741						{
7742							"match": "\\*",
7743							"name": "comment.block.cpp"
7744						}
7745					]
7746				},
7747				"6": {
7748					"name": "punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp"
7749				}
7750			},
7751			"endCaptures": {
7752				"0": {
7753					"name": "punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp"
7754				}
7755			},
7756			"contentName": "meta.arguments.operator.noexcept",
7757			"patterns": [
7758				{
7759					"include": "#evaluation_context"
7760				}
7761			]
7762		},
7763		"number_literal": {
7764			"match": "(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])*",
7765			"captures": {
7766				"0": {
7767					"patterns": [
7768						{
7769							"begin": "(?=.)",
7770							"end": "$",
7771							"beginCaptures": {},
7772							"endCaptures": {},
7773							"patterns": [
7774								{
7775									"match": "(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([pP])((?:\\+)?)((?:\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\w))?((?:\\w(?<![0-9a-fA-FpP])\\w*)?$)",
7776									"captures": {
7777										"1": {
7778											"name": "keyword.other.unit.hexadecimal.cpp"
7779										},
7780										"2": {
7781											"name": "constant.numeric.hexadecimal.cpp",
7782											"patterns": [
7783												{
7784													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7785													"name": "punctuation.separator.constant.numeric.cpp"
7786												}
7787											]
7788										},
7789										"3": {
7790											"name": "punctuation.separator.constant.numeric.cpp"
7791										},
7792										"4": {
7793											"name": "constant.numeric.hexadecimal.cpp"
7794										},
7795										"5": {
7796											"name": "constant.numeric.hexadecimal.cpp",
7797											"patterns": [
7798												{
7799													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7800													"name": "punctuation.separator.constant.numeric.cpp"
7801												}
7802											]
7803										},
7804										"6": {
7805											"name": "punctuation.separator.constant.numeric.cpp"
7806										},
7807										"7": {
7808											"name": "keyword.other.unit.exponent.hexadecimal.cpp"
7809										},
7810										"8": {
7811											"name": "keyword.operator.plus.exponent.hexadecimal.cpp"
7812										},
7813										"9": {
7814											"name": "keyword.operator.minus.exponent.hexadecimal.cpp"
7815										},
7816										"10": {
7817											"name": "constant.numeric.exponent.hexadecimal.cpp",
7818											"patterns": [
7819												{
7820													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7821													"name": "punctuation.separator.constant.numeric.cpp"
7822												}
7823											]
7824										},
7825										"11": {
7826											"name": "keyword.other.unit.suffix.floating-point.cpp"
7827										},
7828										"12": {
7829											"name": "keyword.other.unit.user-defined.cpp"
7830										}
7831									}
7832								},
7833								{
7834									"match": "\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])\\.|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)?(?:(?<!')([eE])((?:\\+)?)((?:\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?([lLfF](?!\\w))?((?:\\w(?<![0-9eE])\\w*)?$)",
7835									"captures": {
7836										"1": {
7837											"name": "constant.numeric.decimal.cpp",
7838											"patterns": [
7839												{
7840													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7841													"name": "punctuation.separator.constant.numeric.cpp"
7842												}
7843											]
7844										},
7845										"2": {
7846											"name": "punctuation.separator.constant.numeric.cpp"
7847										},
7848										"3": {
7849											"name": "constant.numeric.decimal.point.cpp"
7850										},
7851										"4": {
7852											"name": "constant.numeric.decimal.cpp",
7853											"patterns": [
7854												{
7855													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7856													"name": "punctuation.separator.constant.numeric.cpp"
7857												}
7858											]
7859										},
7860										"5": {
7861											"name": "punctuation.separator.constant.numeric.cpp"
7862										},
7863										"6": {
7864											"name": "keyword.other.unit.exponent.decimal.cpp"
7865										},
7866										"7": {
7867											"name": "keyword.operator.plus.exponent.decimal.cpp"
7868										},
7869										"8": {
7870											"name": "keyword.operator.minus.exponent.decimal.cpp"
7871										},
7872										"9": {
7873											"name": "constant.numeric.exponent.decimal.cpp",
7874											"patterns": [
7875												{
7876													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7877													"name": "punctuation.separator.constant.numeric.cpp"
7878												}
7879											]
7880										},
7881										"10": {
7882											"name": "keyword.other.unit.suffix.floating-point.cpp"
7883										},
7884										"11": {
7885											"name": "keyword.other.unit.user-defined.cpp"
7886										}
7887									}
7888								},
7889								{
7890									"match": "(\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?((?:\\w(?<![0-9])\\w*)?$)",
7891									"captures": {
7892										"1": {
7893											"name": "keyword.other.unit.binary.cpp"
7894										},
7895										"2": {
7896											"name": "constant.numeric.binary.cpp",
7897											"patterns": [
7898												{
7899													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7900													"name": "punctuation.separator.constant.numeric.cpp"
7901												}
7902											]
7903										},
7904										"3": {
7905											"name": "punctuation.separator.constant.numeric.cpp"
7906										},
7907										"4": {
7908											"name": "keyword.other.unit.suffix.integer.cpp"
7909										},
7910										"5": {
7911											"name": "keyword.other.unit.user-defined.cpp"
7912										}
7913									}
7914								},
7915								{
7916									"match": "(\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?((?:\\w(?<![0-9])\\w*)?$)",
7917									"captures": {
7918										"1": {
7919											"name": "keyword.other.unit.octal.cpp"
7920										},
7921										"2": {
7922											"name": "constant.numeric.octal.cpp",
7923											"patterns": [
7924												{
7925													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7926													"name": "punctuation.separator.constant.numeric.cpp"
7927												}
7928											]
7929										},
7930										"3": {
7931											"name": "punctuation.separator.constant.numeric.cpp"
7932										},
7933										"4": {
7934											"name": "keyword.other.unit.suffix.integer.cpp"
7935										},
7936										"5": {
7937											"name": "keyword.other.unit.user-defined.cpp"
7938										}
7939									}
7940								},
7941								{
7942									"match": "(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([pP])((?:\\+)?)((?:\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?((?:\\w(?<![0-9a-fA-FpP])\\w*)?$)",
7943									"captures": {
7944										"1": {
7945											"name": "keyword.other.unit.hexadecimal.cpp"
7946										},
7947										"2": {
7948											"name": "constant.numeric.hexadecimal.cpp",
7949											"patterns": [
7950												{
7951													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7952													"name": "punctuation.separator.constant.numeric.cpp"
7953												}
7954											]
7955										},
7956										"3": {
7957											"name": "punctuation.separator.constant.numeric.cpp"
7958										},
7959										"4": {
7960											"name": "keyword.other.unit.exponent.hexadecimal.cpp"
7961										},
7962										"5": {
7963											"name": "keyword.operator.plus.exponent.hexadecimal.cpp"
7964										},
7965										"6": {
7966											"name": "keyword.operator.minus.exponent.hexadecimal.cpp"
7967										},
7968										"7": {
7969											"name": "constant.numeric.exponent.hexadecimal.cpp",
7970											"patterns": [
7971												{
7972													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7973													"name": "punctuation.separator.constant.numeric.cpp"
7974												}
7975											]
7976										},
7977										"8": {
7978											"name": "keyword.other.unit.suffix.integer.cpp"
7979										},
7980										"9": {
7981											"name": "keyword.other.unit.user-defined.cpp"
7982										}
7983									}
7984								},
7985								{
7986									"match": "\\G(?=[0-9.])(?!0[xXbB])([0-9](?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)(?:(?<!')([eE])((?:\\+)?)((?:\\-)?)([0-9](?:[0-9]|(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))*))?((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?((?:\\w(?<![0-9eE])\\w*)?$)",
7987									"captures": {
7988										"1": {
7989											"name": "constant.numeric.decimal.cpp",
7990											"patterns": [
7991												{
7992													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
7993													"name": "punctuation.separator.constant.numeric.cpp"
7994												}
7995											]
7996										},
7997										"2": {
7998											"name": "punctuation.separator.constant.numeric.cpp"
7999										},
8000										"3": {
8001											"name": "keyword.other.unit.exponent.decimal.cpp"
8002										},
8003										"4": {
8004											"name": "keyword.operator.plus.exponent.decimal.cpp"
8005										},
8006										"5": {
8007											"name": "keyword.operator.minus.exponent.decimal.cpp"
8008										},
8009										"6": {
8010											"name": "constant.numeric.exponent.decimal.cpp",
8011											"patterns": [
8012												{
8013													"match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
8014													"name": "punctuation.separator.constant.numeric.cpp"
8015												}
8016											]
8017										},
8018										"7": {
8019											"name": "keyword.other.unit.suffix.integer.cpp"
8020										},
8021										"8": {
8022											"name": "keyword.other.unit.user-defined.cpp"
8023										}
8024									}
8025								},
8026								{
8027									"match": "(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])+",
8028									"name": "invalid.illegal.constant.numeric.cpp"
8029								}
8030							]
8031						}
8032					]
8033				}
8034			}
8035		},
8036		"operator_overload": {
8037			"begin": "(?:(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)(operator)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<55>?)+>)(?:\\s)*+)?::)*+)(?:(?:((?:(?:delete\\[\\])|(?:delete)|(?:new\\[\\])|(?:<=>)|(?:<<=)|(?:new)|(?:>>=)|(?:\\->\\*)|(?:\\/=)|(?:%=)|(?:&=)|(?:>=)|(?:\\|=)|(?:\\+\\+)|(?:\\-\\-)|(?:\\(\\))|(?:\\[\\])|(?:\\->)|(?:\\+\\+)|(?:<<)|(?:>>)|(?:\\-\\-)|(?:<=)|(?:\\^=)|(?:==)|(?:!=)|(?:&&)|(?:\\|\\|)|(?:\\+=)|(?:\\-=)|(?:\\*=)|,|(?:\\+)|(?:\\-)|!|~|(?:\\*)|&|(?:\\*)|(?:\\/)|%|(?:\\+)|(?:\\-)|<|>|&|(?:\\^)|(?:\\|)|=))|((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:\\[\\])?)))|(\"\")((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\<|\\()",
8038			"end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
8039			"beginCaptures": {
8040				"0": {
8041					"name": "meta.head.function.definition.special.operator-overload.cpp"
8042				},
8043				"1": {
8044					"name": "meta.qualified_type.cpp",
8045					"patterns": [
8046						{
8047							"match": "::",
8048							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
8049						},
8050						{
8051							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
8052							"name": "storage.type.$0.cpp"
8053						},
8054						{
8055							"include": "#attributes_context"
8056						},
8057						{
8058							"include": "#storage_types"
8059						},
8060						{
8061							"include": "#number_literal"
8062						},
8063						{
8064							"include": "#string_context"
8065						},
8066						{
8067							"include": "#comma"
8068						},
8069						{
8070							"include": "#scope_resolution_inner_generated"
8071						},
8072						{
8073							"begin": "<",
8074							"end": ">",
8075							"beginCaptures": {
8076								"0": {
8077									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
8078								}
8079							},
8080							"endCaptures": {
8081								"0": {
8082									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
8083								}
8084							},
8085							"name": "meta.template.call.cpp",
8086							"patterns": [
8087								{
8088									"include": "#template_call_context"
8089								}
8090							]
8091						},
8092						{
8093							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
8094							"name": "entity.name.type.cpp"
8095						}
8096					]
8097				},
8098				"2": {
8099					"patterns": [
8100						{
8101							"include": "#attributes_context"
8102						},
8103						{
8104							"include": "#number_literal"
8105						}
8106					]
8107				},
8108				"3": {
8109					"patterns": [
8110						{
8111							"include": "#inline_comment"
8112						}
8113					]
8114				},
8115				"4": {
8116					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8117				},
8118				"5": {
8119					"name": "comment.block.cpp"
8120				},
8121				"6": {
8122					"patterns": [
8123						{
8124							"match": "\\*\\/",
8125							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8126						},
8127						{
8128							"match": "\\*",
8129							"name": "comment.block.cpp"
8130						}
8131					]
8132				},
8133				"7": {
8134					"patterns": [
8135						{
8136							"include": "#inline_comment"
8137						}
8138					]
8139				},
8140				"8": {
8141					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8142				},
8143				"9": {
8144					"name": "comment.block.cpp"
8145				},
8146				"10": {
8147					"patterns": [
8148						{
8149							"match": "\\*\\/",
8150							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8151						},
8152						{
8153							"match": "\\*",
8154							"name": "comment.block.cpp"
8155						}
8156					]
8157				},
8158				"11": {
8159					"patterns": [
8160						{
8161							"match": "::",
8162							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
8163						},
8164						{
8165							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
8166							"name": "entity.name.scope-resolution.type.cpp"
8167						},
8168						{
8169							"include": "#template_call_range"
8170						}
8171					]
8172				},
8173				"12": {
8174					"patterns": [
8175						{
8176							"include": "#template_call_range"
8177						}
8178					]
8179				},
8180				"13": {},
8181				"14": {
8182					"patterns": [
8183						{
8184							"include": "#inline_comment"
8185						}
8186					]
8187				},
8188				"15": {
8189					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8190				},
8191				"16": {
8192					"name": "comment.block.cpp"
8193				},
8194				"17": {
8195					"patterns": [
8196						{
8197							"match": "\\*\\/",
8198							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8199						},
8200						{
8201							"match": "\\*",
8202							"name": "comment.block.cpp"
8203						}
8204					]
8205				},
8206				"18": {},
8207				"19": {
8208					"patterns": [
8209						{
8210							"match": "\\*",
8211							"name": "storage.modifier.pointer.cpp"
8212						},
8213						{
8214							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
8215							"captures": {
8216								"1": {
8217									"patterns": [
8218										{
8219											"include": "#inline_comment"
8220										}
8221									]
8222								},
8223								"2": {
8224									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8225								},
8226								"3": {
8227									"name": "comment.block.cpp"
8228								},
8229								"4": {
8230									"patterns": [
8231										{
8232											"match": "\\*\\/",
8233											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8234										},
8235										{
8236											"match": "\\*",
8237											"name": "comment.block.cpp"
8238										}
8239									]
8240								}
8241							},
8242							"name": "invalid.illegal.reference-type.cpp"
8243						},
8244						{
8245							"match": "\\&",
8246							"name": "storage.modifier.reference.cpp"
8247						}
8248					]
8249				},
8250				"20": {
8251					"patterns": [
8252						{
8253							"include": "#inline_comment"
8254						}
8255					]
8256				},
8257				"21": {
8258					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8259				},
8260				"22": {
8261					"name": "comment.block.cpp"
8262				},
8263				"23": {
8264					"patterns": [
8265						{
8266							"match": "\\*\\/",
8267							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8268						},
8269						{
8270							"match": "\\*",
8271							"name": "comment.block.cpp"
8272						}
8273					]
8274				},
8275				"24": {
8276					"patterns": [
8277						{
8278							"include": "#inline_comment"
8279						}
8280					]
8281				},
8282				"25": {
8283					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8284				},
8285				"26": {
8286					"name": "comment.block.cpp"
8287				},
8288				"27": {
8289					"patterns": [
8290						{
8291							"match": "\\*\\/",
8292							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8293						},
8294						{
8295							"match": "\\*",
8296							"name": "comment.block.cpp"
8297						}
8298					]
8299				},
8300				"28": {
8301					"patterns": [
8302						{
8303							"include": "#inline_comment"
8304						}
8305					]
8306				},
8307				"29": {
8308					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8309				},
8310				"30": {
8311					"name": "comment.block.cpp"
8312				},
8313				"31": {
8314					"patterns": [
8315						{
8316							"match": "\\*\\/",
8317							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8318						},
8319						{
8320							"match": "\\*",
8321							"name": "comment.block.cpp"
8322						}
8323					]
8324				},
8325				"32": {
8326					"patterns": [
8327						{
8328							"include": "#inline_comment"
8329						}
8330					]
8331				},
8332				"33": {
8333					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8334				},
8335				"34": {
8336					"name": "comment.block.cpp"
8337				},
8338				"35": {
8339					"patterns": [
8340						{
8341							"match": "\\*\\/",
8342							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8343						},
8344						{
8345							"match": "\\*",
8346							"name": "comment.block.cpp"
8347						}
8348					]
8349				},
8350				"36": {
8351					"name": "storage.type.modifier.calling-convention.cpp"
8352				},
8353				"37": {
8354					"patterns": [
8355						{
8356							"include": "#inline_comment"
8357						}
8358					]
8359				},
8360				"38": {
8361					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8362				},
8363				"39": {
8364					"name": "comment.block.cpp"
8365				},
8366				"40": {
8367					"patterns": [
8368						{
8369							"match": "\\*\\/",
8370							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8371						},
8372						{
8373							"match": "\\*",
8374							"name": "comment.block.cpp"
8375						}
8376					]
8377				},
8378				"41": {
8379					"patterns": [
8380						{
8381							"include": "#inline_comment"
8382						}
8383					]
8384				},
8385				"42": {
8386					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8387				},
8388				"43": {
8389					"name": "comment.block.cpp"
8390				},
8391				"44": {
8392					"patterns": [
8393						{
8394							"match": "\\*\\/",
8395							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8396						},
8397						{
8398							"match": "\\*",
8399							"name": "comment.block.cpp"
8400						}
8401					]
8402				},
8403				"45": {
8404					"patterns": [
8405						{
8406							"match": "::",
8407							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp"
8408						},
8409						{
8410							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
8411							"name": "entity.name.scope-resolution.operator.cpp"
8412						},
8413						{
8414							"include": "#template_call_range"
8415						}
8416					]
8417				},
8418				"46": {
8419					"patterns": [
8420						{
8421							"include": "#template_call_range"
8422						}
8423					]
8424				},
8425				"47": {},
8426				"48": {
8427					"name": "keyword.other.operator.overload.cpp"
8428				},
8429				"49": {
8430					"patterns": [
8431						{
8432							"include": "#inline_comment"
8433						}
8434					]
8435				},
8436				"50": {
8437					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8438				},
8439				"51": {
8440					"name": "comment.block.cpp"
8441				},
8442				"52": {
8443					"patterns": [
8444						{
8445							"match": "\\*\\/",
8446							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8447						},
8448						{
8449							"match": "\\*",
8450							"name": "comment.block.cpp"
8451						}
8452					]
8453				},
8454				"53": {
8455					"patterns": [
8456						{
8457							"match": "::",
8458							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator-overload.cpp"
8459						},
8460						{
8461							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
8462							"name": "entity.name.scope-resolution.operator-overload.cpp"
8463						},
8464						{
8465							"include": "#template_call_range"
8466						}
8467					]
8468				},
8469				"54": {
8470					"patterns": [
8471						{
8472							"include": "#template_call_range"
8473						}
8474					]
8475				},
8476				"55": {},
8477				"56": {
8478					"name": "entity.name.operator.cpp"
8479				},
8480				"57": {
8481					"name": "entity.name.operator.type.cpp"
8482				},
8483				"58": {
8484					"patterns": [
8485						{
8486							"match": "\\*",
8487							"name": "entity.name.operator.type.pointer.cpp"
8488						},
8489						{
8490							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
8491							"captures": {
8492								"1": {
8493									"patterns": [
8494										{
8495											"include": "#inline_comment"
8496										}
8497									]
8498								},
8499								"2": {
8500									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8501								},
8502								"3": {
8503									"name": "comment.block.cpp"
8504								},
8505								"4": {
8506									"patterns": [
8507										{
8508											"match": "\\*\\/",
8509											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8510										},
8511										{
8512											"match": "\\*",
8513											"name": "comment.block.cpp"
8514										}
8515									]
8516								}
8517							},
8518							"name": "invalid.illegal.reference-type.cpp"
8519						},
8520						{
8521							"match": "\\&",
8522							"name": "entity.name.operator.type.reference.cpp"
8523						}
8524					]
8525				},
8526				"59": {
8527					"patterns": [
8528						{
8529							"include": "#inline_comment"
8530						}
8531					]
8532				},
8533				"60": {
8534					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8535				},
8536				"61": {
8537					"name": "comment.block.cpp"
8538				},
8539				"62": {
8540					"patterns": [
8541						{
8542							"match": "\\*\\/",
8543							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8544						},
8545						{
8546							"match": "\\*",
8547							"name": "comment.block.cpp"
8548						}
8549					]
8550				},
8551				"63": {
8552					"patterns": [
8553						{
8554							"include": "#inline_comment"
8555						}
8556					]
8557				},
8558				"64": {
8559					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8560				},
8561				"65": {
8562					"name": "comment.block.cpp"
8563				},
8564				"66": {
8565					"patterns": [
8566						{
8567							"match": "\\*\\/",
8568							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8569						},
8570						{
8571							"match": "\\*",
8572							"name": "comment.block.cpp"
8573						}
8574					]
8575				},
8576				"67": {
8577					"patterns": [
8578						{
8579							"include": "#inline_comment"
8580						}
8581					]
8582				},
8583				"68": {
8584					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8585				},
8586				"69": {
8587					"name": "comment.block.cpp"
8588				},
8589				"70": {
8590					"patterns": [
8591						{
8592							"match": "\\*\\/",
8593							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8594						},
8595						{
8596							"match": "\\*",
8597							"name": "comment.block.cpp"
8598						}
8599					]
8600				},
8601				"71": {
8602					"name": "entity.name.operator.type.array.cpp"
8603				},
8604				"72": {
8605					"name": "entity.name.operator.custom-literal.cpp"
8606				},
8607				"73": {
8608					"patterns": [
8609						{
8610							"include": "#inline_comment"
8611						}
8612					]
8613				},
8614				"74": {
8615					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8616				},
8617				"75": {
8618					"name": "comment.block.cpp"
8619				},
8620				"76": {
8621					"patterns": [
8622						{
8623							"match": "\\*\\/",
8624							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8625						},
8626						{
8627							"match": "\\*",
8628							"name": "comment.block.cpp"
8629						}
8630					]
8631				},
8632				"77": {
8633					"name": "entity.name.operator.custom-literal.cpp"
8634				},
8635				"78": {
8636					"patterns": [
8637						{
8638							"include": "#inline_comment"
8639						}
8640					]
8641				},
8642				"79": {
8643					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8644				},
8645				"80": {
8646					"name": "comment.block.cpp"
8647				},
8648				"81": {
8649					"patterns": [
8650						{
8651							"match": "\\*\\/",
8652							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8653						},
8654						{
8655							"match": "\\*",
8656							"name": "comment.block.cpp"
8657						}
8658					]
8659				}
8660			},
8661			"endCaptures": {},
8662			"name": "meta.function.definition.special.operator-overload.cpp",
8663			"patterns": [
8664				{
8665					"begin": "\\G ?",
8666					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
8667					"beginCaptures": {},
8668					"endCaptures": {
8669						"0": {
8670							"name": "punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp"
8671						}
8672					},
8673					"name": "meta.head.function.definition.special.operator-overload.cpp",
8674					"patterns": [
8675						{
8676							"include": "#ever_present_context"
8677						},
8678						{
8679							"include": "#template_call_range"
8680						},
8681						{
8682							"begin": "\\(",
8683							"end": "\\)",
8684							"beginCaptures": {
8685								"0": {
8686									"name": "punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp"
8687								}
8688							},
8689							"endCaptures": {
8690								"0": {
8691									"name": "punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp"
8692								}
8693							},
8694							"contentName": "meta.function.definition.parameters.special.operator-overload",
8695							"patterns": [
8696								{
8697									"include": "#function_parameter_context"
8698								},
8699								{
8700									"include": "#evaluation_context"
8701								}
8702							]
8703						},
8704						{
8705							"include": "#qualifiers_and_specifiers_post_parameters"
8706						},
8707						{
8708							"include": "$self"
8709						}
8710					]
8711				},
8712				{
8713					"begin": "(?<=\\{|<%|\\?\\?<)",
8714					"end": "\\}|%>|\\?\\?>",
8715					"beginCaptures": {},
8716					"endCaptures": {
8717						"0": {
8718							"name": "punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp"
8719						}
8720					},
8721					"name": "meta.body.function.definition.special.operator-overload.cpp",
8722					"patterns": [
8723						{
8724							"include": "#function_body_context"
8725						}
8726					]
8727				},
8728				{
8729					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
8730					"end": "[\\s]*(?=;)",
8731					"beginCaptures": {},
8732					"endCaptures": {},
8733					"name": "meta.tail.function.definition.special.operator-overload.cpp",
8734					"patterns": [
8735						{
8736							"include": "$self"
8737						}
8738					]
8739				}
8740			]
8741		},
8742		"operators": {
8743			"patterns": [
8744				{
8745					"begin": "((?<!\\w)sizeof(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
8746					"end": "\\)",
8747					"beginCaptures": {
8748						"1": {
8749							"name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp"
8750						},
8751						"2": {
8752							"patterns": [
8753								{
8754									"include": "#inline_comment"
8755								}
8756							]
8757						},
8758						"3": {
8759							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8760						},
8761						"4": {
8762							"name": "comment.block.cpp"
8763						},
8764						"5": {
8765							"patterns": [
8766								{
8767									"match": "\\*\\/",
8768									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8769								},
8770								{
8771									"match": "\\*",
8772									"name": "comment.block.cpp"
8773								}
8774							]
8775						},
8776						"6": {
8777							"name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp"
8778						}
8779					},
8780					"endCaptures": {
8781						"0": {
8782							"name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp"
8783						}
8784					},
8785					"contentName": "meta.arguments.operator.sizeof",
8786					"patterns": [
8787						{
8788							"include": "#evaluation_context"
8789						}
8790					]
8791				},
8792				{
8793					"begin": "((?<!\\w)alignof(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
8794					"end": "\\)",
8795					"beginCaptures": {
8796						"1": {
8797							"name": "keyword.operator.functionlike.cpp keyword.operator.alignof.cpp"
8798						},
8799						"2": {
8800							"patterns": [
8801								{
8802									"include": "#inline_comment"
8803								}
8804							]
8805						},
8806						"3": {
8807							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8808						},
8809						"4": {
8810							"name": "comment.block.cpp"
8811						},
8812						"5": {
8813							"patterns": [
8814								{
8815									"match": "\\*\\/",
8816									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8817								},
8818								{
8819									"match": "\\*",
8820									"name": "comment.block.cpp"
8821								}
8822							]
8823						},
8824						"6": {
8825							"name": "punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp"
8826						}
8827					},
8828					"endCaptures": {
8829						"0": {
8830							"name": "punctuation.section.arguments.end.bracket.round.operator.alignof.cpp"
8831						}
8832					},
8833					"contentName": "meta.arguments.operator.alignof",
8834					"patterns": [
8835						{
8836							"include": "#evaluation_context"
8837						}
8838					]
8839				},
8840				{
8841					"begin": "((?<!\\w)alignas(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
8842					"end": "\\)",
8843					"beginCaptures": {
8844						"1": {
8845							"name": "keyword.operator.functionlike.cpp keyword.operator.alignas.cpp"
8846						},
8847						"2": {
8848							"patterns": [
8849								{
8850									"include": "#inline_comment"
8851								}
8852							]
8853						},
8854						"3": {
8855							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8856						},
8857						"4": {
8858							"name": "comment.block.cpp"
8859						},
8860						"5": {
8861							"patterns": [
8862								{
8863									"match": "\\*\\/",
8864									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8865								},
8866								{
8867									"match": "\\*",
8868									"name": "comment.block.cpp"
8869								}
8870							]
8871						},
8872						"6": {
8873							"name": "punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp"
8874						}
8875					},
8876					"endCaptures": {
8877						"0": {
8878							"name": "punctuation.section.arguments.end.bracket.round.operator.alignas.cpp"
8879						}
8880					},
8881					"contentName": "meta.arguments.operator.alignas",
8882					"patterns": [
8883						{
8884							"include": "#evaluation_context"
8885						}
8886					]
8887				},
8888				{
8889					"begin": "((?<!\\w)typeid(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
8890					"end": "\\)",
8891					"beginCaptures": {
8892						"1": {
8893							"name": "keyword.operator.functionlike.cpp keyword.operator.typeid.cpp"
8894						},
8895						"2": {
8896							"patterns": [
8897								{
8898									"include": "#inline_comment"
8899								}
8900							]
8901						},
8902						"3": {
8903							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8904						},
8905						"4": {
8906							"name": "comment.block.cpp"
8907						},
8908						"5": {
8909							"patterns": [
8910								{
8911									"match": "\\*\\/",
8912									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8913								},
8914								{
8915									"match": "\\*",
8916									"name": "comment.block.cpp"
8917								}
8918							]
8919						},
8920						"6": {
8921							"name": "punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp"
8922						}
8923					},
8924					"endCaptures": {
8925						"0": {
8926							"name": "punctuation.section.arguments.end.bracket.round.operator.typeid.cpp"
8927						}
8928					},
8929					"contentName": "meta.arguments.operator.typeid",
8930					"patterns": [
8931						{
8932							"include": "#evaluation_context"
8933						}
8934					]
8935				},
8936				{
8937					"begin": "((?<!\\w)noexcept(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
8938					"end": "\\)",
8939					"beginCaptures": {
8940						"1": {
8941							"name": "keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp"
8942						},
8943						"2": {
8944							"patterns": [
8945								{
8946									"include": "#inline_comment"
8947								}
8948							]
8949						},
8950						"3": {
8951							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
8952						},
8953						"4": {
8954							"name": "comment.block.cpp"
8955						},
8956						"5": {
8957							"patterns": [
8958								{
8959									"match": "\\*\\/",
8960									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
8961								},
8962								{
8963									"match": "\\*",
8964									"name": "comment.block.cpp"
8965								}
8966							]
8967						},
8968						"6": {
8969							"name": "punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp"
8970						}
8971					},
8972					"endCaptures": {
8973						"0": {
8974							"name": "punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp"
8975						}
8976					},
8977					"contentName": "meta.arguments.operator.noexcept",
8978					"patterns": [
8979						{
8980							"include": "#evaluation_context"
8981						}
8982					]
8983				},
8984				{
8985					"begin": "(\\bsizeof\\.\\.\\.)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
8986					"end": "\\)",
8987					"beginCaptures": {
8988						"1": {
8989							"name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp"
8990						},
8991						"2": {
8992							"patterns": [
8993								{
8994									"include": "#inline_comment"
8995								}
8996							]
8997						},
8998						"3": {
8999							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9000						},
9001						"4": {
9002							"name": "comment.block.cpp"
9003						},
9004						"5": {
9005							"patterns": [
9006								{
9007									"match": "\\*\\/",
9008									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9009								},
9010								{
9011									"match": "\\*",
9012									"name": "comment.block.cpp"
9013								}
9014							]
9015						},
9016						"6": {
9017							"name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp"
9018						}
9019					},
9020					"endCaptures": {
9021						"0": {
9022							"name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp"
9023						}
9024					},
9025					"contentName": "meta.arguments.operator.sizeof.variadic",
9026					"patterns": [
9027						{
9028							"include": "#evaluation_context"
9029						}
9030					]
9031				},
9032				{
9033					"match": "--",
9034					"name": "keyword.operator.decrement.cpp"
9035				},
9036				{
9037					"match": "\\+\\+",
9038					"name": "keyword.operator.increment.cpp"
9039				},
9040				{
9041					"match": "%=|\\+=|-=|\\*=|(?<!\\()\\/=",
9042					"name": "keyword.operator.assignment.compound.cpp"
9043				},
9044				{
9045					"match": "&=|\\^=|<<=|>>=|\\|=",
9046					"name": "keyword.operator.assignment.compound.bitwise.cpp"
9047				},
9048				{
9049					"match": "<<|>>",
9050					"name": "keyword.operator.bitwise.shift.cpp"
9051				},
9052				{
9053					"match": "!=|<=|>=|==|<|>",
9054					"name": "keyword.operator.comparison.cpp"
9055				},
9056				{
9057					"match": "&&|!|\\|\\|",
9058					"name": "keyword.operator.logical.cpp"
9059				},
9060				{
9061					"match": "&|\\||\\^|~",
9062					"name": "keyword.operator.cpp"
9063				},
9064				{
9065					"include": "#assignment_operator"
9066				},
9067				{
9068					"match": "%|\\*|\\/|-|\\+",
9069					"name": "keyword.operator.cpp"
9070				},
9071				{
9072					"include": "#ternary_operator"
9073				}
9074			]
9075		},
9076		"over_qualified_types": {
9077			"patterns": [
9078				{
9079					"match": "(struct)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)",
9080					"captures": {
9081						"1": {
9082							"name": "storage.type.struct.parameter.cpp"
9083						},
9084						"2": {
9085							"patterns": [
9086								{
9087									"include": "#inline_comment"
9088								}
9089							]
9090						},
9091						"3": {
9092							"patterns": [
9093								{
9094									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9095									"captures": {
9096										"1": {
9097											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9098										},
9099										"2": {
9100											"name": "comment.block.cpp"
9101										},
9102										"3": {
9103											"patterns": [
9104												{
9105													"match": "\\*\\/",
9106													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9107												},
9108												{
9109													"match": "\\*",
9110													"name": "comment.block.cpp"
9111												}
9112											]
9113										}
9114									}
9115								}
9116							]
9117						},
9118						"4": {
9119							"name": "entity.name.type.struct.parameter.cpp"
9120						},
9121						"5": {
9122							"patterns": [
9123								{
9124									"include": "#inline_comment"
9125								}
9126							]
9127						},
9128						"6": {
9129							"patterns": [
9130								{
9131									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9132									"captures": {
9133										"1": {
9134											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9135										},
9136										"2": {
9137											"name": "comment.block.cpp"
9138										},
9139										"3": {
9140											"patterns": [
9141												{
9142													"match": "\\*\\/",
9143													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9144												},
9145												{
9146													"match": "\\*",
9147													"name": "comment.block.cpp"
9148												}
9149											]
9150										}
9151									}
9152								}
9153							]
9154						},
9155						"7": {
9156							"patterns": [
9157								{
9158									"match": "\\*",
9159									"name": "storage.modifier.pointer.cpp"
9160								},
9161								{
9162									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
9163									"captures": {
9164										"1": {
9165											"patterns": [
9166												{
9167													"include": "#inline_comment"
9168												}
9169											]
9170										},
9171										"2": {
9172											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9173										},
9174										"3": {
9175											"name": "comment.block.cpp"
9176										},
9177										"4": {
9178											"patterns": [
9179												{
9180													"match": "\\*\\/",
9181													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9182												},
9183												{
9184													"match": "\\*",
9185													"name": "comment.block.cpp"
9186												}
9187											]
9188										}
9189									},
9190									"name": "invalid.illegal.reference-type.cpp"
9191								},
9192								{
9193									"match": "\\&",
9194									"name": "storage.modifier.reference.cpp"
9195								}
9196							]
9197						},
9198						"8": {
9199							"patterns": [
9200								{
9201									"include": "#inline_comment"
9202								}
9203							]
9204						},
9205						"9": {
9206							"patterns": [
9207								{
9208									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9209									"captures": {
9210										"1": {
9211											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9212										},
9213										"2": {
9214											"name": "comment.block.cpp"
9215										},
9216										"3": {
9217											"patterns": [
9218												{
9219													"match": "\\*\\/",
9220													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9221												},
9222												{
9223													"match": "\\*",
9224													"name": "comment.block.cpp"
9225												}
9226											]
9227										}
9228									}
9229								}
9230							]
9231						},
9232						"10": {
9233							"patterns": [
9234								{
9235									"include": "#inline_comment"
9236								}
9237							]
9238						},
9239						"11": {
9240							"patterns": [
9241								{
9242									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9243									"captures": {
9244										"1": {
9245											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9246										},
9247										"2": {
9248											"name": "comment.block.cpp"
9249										},
9250										"3": {
9251											"patterns": [
9252												{
9253													"match": "\\*\\/",
9254													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9255												},
9256												{
9257													"match": "\\*",
9258													"name": "comment.block.cpp"
9259												}
9260											]
9261										}
9262									}
9263								}
9264							]
9265						},
9266						"12": {
9267							"patterns": [
9268								{
9269									"include": "#inline_comment"
9270								}
9271							]
9272						},
9273						"13": {
9274							"patterns": [
9275								{
9276									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9277									"captures": {
9278										"1": {
9279											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9280										},
9281										"2": {
9282											"name": "comment.block.cpp"
9283										},
9284										"3": {
9285											"patterns": [
9286												{
9287													"match": "\\*\\/",
9288													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9289												},
9290												{
9291													"match": "\\*",
9292													"name": "comment.block.cpp"
9293												}
9294											]
9295										}
9296									}
9297								}
9298							]
9299						},
9300						"14": {
9301							"name": "variable.other.object.declare.cpp"
9302						},
9303						"15": {
9304							"patterns": [
9305								{
9306									"include": "#inline_comment"
9307								}
9308							]
9309						},
9310						"16": {
9311							"patterns": [
9312								{
9313									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9314									"captures": {
9315										"1": {
9316											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9317										},
9318										"2": {
9319											"name": "comment.block.cpp"
9320										},
9321										"3": {
9322											"patterns": [
9323												{
9324													"match": "\\*\\/",
9325													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9326												},
9327												{
9328													"match": "\\*",
9329													"name": "comment.block.cpp"
9330												}
9331											]
9332										}
9333									}
9334								}
9335							]
9336						},
9337						"17": {
9338							"patterns": [
9339								{
9340									"include": "#inline_comment"
9341								}
9342							]
9343						},
9344						"18": {
9345							"patterns": [
9346								{
9347									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9348									"captures": {
9349										"1": {
9350											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9351										},
9352										"2": {
9353											"name": "comment.block.cpp"
9354										},
9355										"3": {
9356											"patterns": [
9357												{
9358													"match": "\\*\\/",
9359													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9360												},
9361												{
9362													"match": "\\*",
9363													"name": "comment.block.cpp"
9364												}
9365											]
9366										}
9367									}
9368								}
9369							]
9370						},
9371						"19": {
9372							"patterns": [
9373								{
9374									"include": "#inline_comment"
9375								}
9376							]
9377						},
9378						"20": {
9379							"patterns": [
9380								{
9381									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9382									"captures": {
9383										"1": {
9384											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9385										},
9386										"2": {
9387											"name": "comment.block.cpp"
9388										},
9389										"3": {
9390											"patterns": [
9391												{
9392													"match": "\\*\\/",
9393													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9394												},
9395												{
9396													"match": "\\*",
9397													"name": "comment.block.cpp"
9398												}
9399											]
9400										}
9401									}
9402								}
9403							]
9404						}
9405					}
9406				},
9407				{
9408					"match": "(enum)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)",
9409					"captures": {
9410						"1": {
9411							"name": "storage.type.enum.parameter.cpp"
9412						},
9413						"2": {
9414							"patterns": [
9415								{
9416									"include": "#inline_comment"
9417								}
9418							]
9419						},
9420						"3": {
9421							"patterns": [
9422								{
9423									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9424									"captures": {
9425										"1": {
9426											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9427										},
9428										"2": {
9429											"name": "comment.block.cpp"
9430										},
9431										"3": {
9432											"patterns": [
9433												{
9434													"match": "\\*\\/",
9435													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9436												},
9437												{
9438													"match": "\\*",
9439													"name": "comment.block.cpp"
9440												}
9441											]
9442										}
9443									}
9444								}
9445							]
9446						},
9447						"4": {
9448							"name": "entity.name.type.enum.parameter.cpp"
9449						},
9450						"5": {
9451							"patterns": [
9452								{
9453									"include": "#inline_comment"
9454								}
9455							]
9456						},
9457						"6": {
9458							"patterns": [
9459								{
9460									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9461									"captures": {
9462										"1": {
9463											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9464										},
9465										"2": {
9466											"name": "comment.block.cpp"
9467										},
9468										"3": {
9469											"patterns": [
9470												{
9471													"match": "\\*\\/",
9472													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9473												},
9474												{
9475													"match": "\\*",
9476													"name": "comment.block.cpp"
9477												}
9478											]
9479										}
9480									}
9481								}
9482							]
9483						},
9484						"7": {
9485							"patterns": [
9486								{
9487									"match": "\\*",
9488									"name": "storage.modifier.pointer.cpp"
9489								},
9490								{
9491									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
9492									"captures": {
9493										"1": {
9494											"patterns": [
9495												{
9496													"include": "#inline_comment"
9497												}
9498											]
9499										},
9500										"2": {
9501											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9502										},
9503										"3": {
9504											"name": "comment.block.cpp"
9505										},
9506										"4": {
9507											"patterns": [
9508												{
9509													"match": "\\*\\/",
9510													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9511												},
9512												{
9513													"match": "\\*",
9514													"name": "comment.block.cpp"
9515												}
9516											]
9517										}
9518									},
9519									"name": "invalid.illegal.reference-type.cpp"
9520								},
9521								{
9522									"match": "\\&",
9523									"name": "storage.modifier.reference.cpp"
9524								}
9525							]
9526						},
9527						"8": {
9528							"patterns": [
9529								{
9530									"include": "#inline_comment"
9531								}
9532							]
9533						},
9534						"9": {
9535							"patterns": [
9536								{
9537									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9538									"captures": {
9539										"1": {
9540											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9541										},
9542										"2": {
9543											"name": "comment.block.cpp"
9544										},
9545										"3": {
9546											"patterns": [
9547												{
9548													"match": "\\*\\/",
9549													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9550												},
9551												{
9552													"match": "\\*",
9553													"name": "comment.block.cpp"
9554												}
9555											]
9556										}
9557									}
9558								}
9559							]
9560						},
9561						"10": {
9562							"patterns": [
9563								{
9564									"include": "#inline_comment"
9565								}
9566							]
9567						},
9568						"11": {
9569							"patterns": [
9570								{
9571									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9572									"captures": {
9573										"1": {
9574											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9575										},
9576										"2": {
9577											"name": "comment.block.cpp"
9578										},
9579										"3": {
9580											"patterns": [
9581												{
9582													"match": "\\*\\/",
9583													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9584												},
9585												{
9586													"match": "\\*",
9587													"name": "comment.block.cpp"
9588												}
9589											]
9590										}
9591									}
9592								}
9593							]
9594						},
9595						"12": {
9596							"patterns": [
9597								{
9598									"include": "#inline_comment"
9599								}
9600							]
9601						},
9602						"13": {
9603							"patterns": [
9604								{
9605									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9606									"captures": {
9607										"1": {
9608											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9609										},
9610										"2": {
9611											"name": "comment.block.cpp"
9612										},
9613										"3": {
9614											"patterns": [
9615												{
9616													"match": "\\*\\/",
9617													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9618												},
9619												{
9620													"match": "\\*",
9621													"name": "comment.block.cpp"
9622												}
9623											]
9624										}
9625									}
9626								}
9627							]
9628						},
9629						"14": {
9630							"name": "variable.other.object.declare.cpp"
9631						},
9632						"15": {
9633							"patterns": [
9634								{
9635									"include": "#inline_comment"
9636								}
9637							]
9638						},
9639						"16": {
9640							"patterns": [
9641								{
9642									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9643									"captures": {
9644										"1": {
9645											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9646										},
9647										"2": {
9648											"name": "comment.block.cpp"
9649										},
9650										"3": {
9651											"patterns": [
9652												{
9653													"match": "\\*\\/",
9654													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9655												},
9656												{
9657													"match": "\\*",
9658													"name": "comment.block.cpp"
9659												}
9660											]
9661										}
9662									}
9663								}
9664							]
9665						},
9666						"17": {
9667							"patterns": [
9668								{
9669									"include": "#inline_comment"
9670								}
9671							]
9672						},
9673						"18": {
9674							"patterns": [
9675								{
9676									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9677									"captures": {
9678										"1": {
9679											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9680										},
9681										"2": {
9682											"name": "comment.block.cpp"
9683										},
9684										"3": {
9685											"patterns": [
9686												{
9687													"match": "\\*\\/",
9688													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9689												},
9690												{
9691													"match": "\\*",
9692													"name": "comment.block.cpp"
9693												}
9694											]
9695										}
9696									}
9697								}
9698							]
9699						},
9700						"19": {
9701							"patterns": [
9702								{
9703									"include": "#inline_comment"
9704								}
9705							]
9706						},
9707						"20": {
9708							"patterns": [
9709								{
9710									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9711									"captures": {
9712										"1": {
9713											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9714										},
9715										"2": {
9716											"name": "comment.block.cpp"
9717										},
9718										"3": {
9719											"patterns": [
9720												{
9721													"match": "\\*\\/",
9722													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9723												},
9724												{
9725													"match": "\\*",
9726													"name": "comment.block.cpp"
9727												}
9728											]
9729										}
9730									}
9731								}
9732							]
9733						}
9734					}
9735				},
9736				{
9737					"match": "(union)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)",
9738					"captures": {
9739						"1": {
9740							"name": "storage.type.union.parameter.cpp"
9741						},
9742						"2": {
9743							"patterns": [
9744								{
9745									"include": "#inline_comment"
9746								}
9747							]
9748						},
9749						"3": {
9750							"patterns": [
9751								{
9752									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9753									"captures": {
9754										"1": {
9755											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9756										},
9757										"2": {
9758											"name": "comment.block.cpp"
9759										},
9760										"3": {
9761											"patterns": [
9762												{
9763													"match": "\\*\\/",
9764													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9765												},
9766												{
9767													"match": "\\*",
9768													"name": "comment.block.cpp"
9769												}
9770											]
9771										}
9772									}
9773								}
9774							]
9775						},
9776						"4": {
9777							"name": "entity.name.type.union.parameter.cpp"
9778						},
9779						"5": {
9780							"patterns": [
9781								{
9782									"include": "#inline_comment"
9783								}
9784							]
9785						},
9786						"6": {
9787							"patterns": [
9788								{
9789									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9790									"captures": {
9791										"1": {
9792											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9793										},
9794										"2": {
9795											"name": "comment.block.cpp"
9796										},
9797										"3": {
9798											"patterns": [
9799												{
9800													"match": "\\*\\/",
9801													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9802												},
9803												{
9804													"match": "\\*",
9805													"name": "comment.block.cpp"
9806												}
9807											]
9808										}
9809									}
9810								}
9811							]
9812						},
9813						"7": {
9814							"patterns": [
9815								{
9816									"match": "\\*",
9817									"name": "storage.modifier.pointer.cpp"
9818								},
9819								{
9820									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
9821									"captures": {
9822										"1": {
9823											"patterns": [
9824												{
9825													"include": "#inline_comment"
9826												}
9827											]
9828										},
9829										"2": {
9830											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9831										},
9832										"3": {
9833											"name": "comment.block.cpp"
9834										},
9835										"4": {
9836											"patterns": [
9837												{
9838													"match": "\\*\\/",
9839													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9840												},
9841												{
9842													"match": "\\*",
9843													"name": "comment.block.cpp"
9844												}
9845											]
9846										}
9847									},
9848									"name": "invalid.illegal.reference-type.cpp"
9849								},
9850								{
9851									"match": "\\&",
9852									"name": "storage.modifier.reference.cpp"
9853								}
9854							]
9855						},
9856						"8": {
9857							"patterns": [
9858								{
9859									"include": "#inline_comment"
9860								}
9861							]
9862						},
9863						"9": {
9864							"patterns": [
9865								{
9866									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9867									"captures": {
9868										"1": {
9869											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9870										},
9871										"2": {
9872											"name": "comment.block.cpp"
9873										},
9874										"3": {
9875											"patterns": [
9876												{
9877													"match": "\\*\\/",
9878													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9879												},
9880												{
9881													"match": "\\*",
9882													"name": "comment.block.cpp"
9883												}
9884											]
9885										}
9886									}
9887								}
9888							]
9889						},
9890						"10": {
9891							"patterns": [
9892								{
9893									"include": "#inline_comment"
9894								}
9895							]
9896						},
9897						"11": {
9898							"patterns": [
9899								{
9900									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9901									"captures": {
9902										"1": {
9903											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9904										},
9905										"2": {
9906											"name": "comment.block.cpp"
9907										},
9908										"3": {
9909											"patterns": [
9910												{
9911													"match": "\\*\\/",
9912													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9913												},
9914												{
9915													"match": "\\*",
9916													"name": "comment.block.cpp"
9917												}
9918											]
9919										}
9920									}
9921								}
9922							]
9923						},
9924						"12": {
9925							"patterns": [
9926								{
9927									"include": "#inline_comment"
9928								}
9929							]
9930						},
9931						"13": {
9932							"patterns": [
9933								{
9934									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9935									"captures": {
9936										"1": {
9937											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9938										},
9939										"2": {
9940											"name": "comment.block.cpp"
9941										},
9942										"3": {
9943											"patterns": [
9944												{
9945													"match": "\\*\\/",
9946													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9947												},
9948												{
9949													"match": "\\*",
9950													"name": "comment.block.cpp"
9951												}
9952											]
9953										}
9954									}
9955								}
9956							]
9957						},
9958						"14": {
9959							"name": "variable.other.object.declare.cpp"
9960						},
9961						"15": {
9962							"patterns": [
9963								{
9964									"include": "#inline_comment"
9965								}
9966							]
9967						},
9968						"16": {
9969							"patterns": [
9970								{
9971									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
9972									"captures": {
9973										"1": {
9974											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
9975										},
9976										"2": {
9977											"name": "comment.block.cpp"
9978										},
9979										"3": {
9980											"patterns": [
9981												{
9982													"match": "\\*\\/",
9983													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
9984												},
9985												{
9986													"match": "\\*",
9987													"name": "comment.block.cpp"
9988												}
9989											]
9990										}
9991									}
9992								}
9993							]
9994						},
9995						"17": {
9996							"patterns": [
9997								{
9998									"include": "#inline_comment"
9999								}
10000							]
10001						},
10002						"18": {
10003							"patterns": [
10004								{
10005									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10006									"captures": {
10007										"1": {
10008											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10009										},
10010										"2": {
10011											"name": "comment.block.cpp"
10012										},
10013										"3": {
10014											"patterns": [
10015												{
10016													"match": "\\*\\/",
10017													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10018												},
10019												{
10020													"match": "\\*",
10021													"name": "comment.block.cpp"
10022												}
10023											]
10024										}
10025									}
10026								}
10027							]
10028						},
10029						"19": {
10030							"patterns": [
10031								{
10032									"include": "#inline_comment"
10033								}
10034							]
10035						},
10036						"20": {
10037							"patterns": [
10038								{
10039									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10040									"captures": {
10041										"1": {
10042											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10043										},
10044										"2": {
10045											"name": "comment.block.cpp"
10046										},
10047										"3": {
10048											"patterns": [
10049												{
10050													"match": "\\*\\/",
10051													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10052												},
10053												{
10054													"match": "\\*",
10055													"name": "comment.block.cpp"
10056												}
10057											]
10058										}
10059									}
10060								}
10061							]
10062						}
10063					}
10064				},
10065				{
10066					"match": "(class)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)",
10067					"captures": {
10068						"1": {
10069							"name": "storage.type.class.parameter.cpp"
10070						},
10071						"2": {
10072							"patterns": [
10073								{
10074									"include": "#inline_comment"
10075								}
10076							]
10077						},
10078						"3": {
10079							"patterns": [
10080								{
10081									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10082									"captures": {
10083										"1": {
10084											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10085										},
10086										"2": {
10087											"name": "comment.block.cpp"
10088										},
10089										"3": {
10090											"patterns": [
10091												{
10092													"match": "\\*\\/",
10093													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10094												},
10095												{
10096													"match": "\\*",
10097													"name": "comment.block.cpp"
10098												}
10099											]
10100										}
10101									}
10102								}
10103							]
10104						},
10105						"4": {
10106							"name": "entity.name.type.class.parameter.cpp"
10107						},
10108						"5": {
10109							"patterns": [
10110								{
10111									"include": "#inline_comment"
10112								}
10113							]
10114						},
10115						"6": {
10116							"patterns": [
10117								{
10118									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10119									"captures": {
10120										"1": {
10121											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10122										},
10123										"2": {
10124											"name": "comment.block.cpp"
10125										},
10126										"3": {
10127											"patterns": [
10128												{
10129													"match": "\\*\\/",
10130													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10131												},
10132												{
10133													"match": "\\*",
10134													"name": "comment.block.cpp"
10135												}
10136											]
10137										}
10138									}
10139								}
10140							]
10141						},
10142						"7": {
10143							"patterns": [
10144								{
10145									"match": "\\*",
10146									"name": "storage.modifier.pointer.cpp"
10147								},
10148								{
10149									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
10150									"captures": {
10151										"1": {
10152											"patterns": [
10153												{
10154													"include": "#inline_comment"
10155												}
10156											]
10157										},
10158										"2": {
10159											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10160										},
10161										"3": {
10162											"name": "comment.block.cpp"
10163										},
10164										"4": {
10165											"patterns": [
10166												{
10167													"match": "\\*\\/",
10168													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10169												},
10170												{
10171													"match": "\\*",
10172													"name": "comment.block.cpp"
10173												}
10174											]
10175										}
10176									},
10177									"name": "invalid.illegal.reference-type.cpp"
10178								},
10179								{
10180									"match": "\\&",
10181									"name": "storage.modifier.reference.cpp"
10182								}
10183							]
10184						},
10185						"8": {
10186							"patterns": [
10187								{
10188									"include": "#inline_comment"
10189								}
10190							]
10191						},
10192						"9": {
10193							"patterns": [
10194								{
10195									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10196									"captures": {
10197										"1": {
10198											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10199										},
10200										"2": {
10201											"name": "comment.block.cpp"
10202										},
10203										"3": {
10204											"patterns": [
10205												{
10206													"match": "\\*\\/",
10207													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10208												},
10209												{
10210													"match": "\\*",
10211													"name": "comment.block.cpp"
10212												}
10213											]
10214										}
10215									}
10216								}
10217							]
10218						},
10219						"10": {
10220							"patterns": [
10221								{
10222									"include": "#inline_comment"
10223								}
10224							]
10225						},
10226						"11": {
10227							"patterns": [
10228								{
10229									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10230									"captures": {
10231										"1": {
10232											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10233										},
10234										"2": {
10235											"name": "comment.block.cpp"
10236										},
10237										"3": {
10238											"patterns": [
10239												{
10240													"match": "\\*\\/",
10241													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10242												},
10243												{
10244													"match": "\\*",
10245													"name": "comment.block.cpp"
10246												}
10247											]
10248										}
10249									}
10250								}
10251							]
10252						},
10253						"12": {
10254							"patterns": [
10255								{
10256									"include": "#inline_comment"
10257								}
10258							]
10259						},
10260						"13": {
10261							"patterns": [
10262								{
10263									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10264									"captures": {
10265										"1": {
10266											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10267										},
10268										"2": {
10269											"name": "comment.block.cpp"
10270										},
10271										"3": {
10272											"patterns": [
10273												{
10274													"match": "\\*\\/",
10275													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10276												},
10277												{
10278													"match": "\\*",
10279													"name": "comment.block.cpp"
10280												}
10281											]
10282										}
10283									}
10284								}
10285							]
10286						},
10287						"14": {
10288							"name": "variable.other.object.declare.cpp"
10289						},
10290						"15": {
10291							"patterns": [
10292								{
10293									"include": "#inline_comment"
10294								}
10295							]
10296						},
10297						"16": {
10298							"patterns": [
10299								{
10300									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10301									"captures": {
10302										"1": {
10303											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10304										},
10305										"2": {
10306											"name": "comment.block.cpp"
10307										},
10308										"3": {
10309											"patterns": [
10310												{
10311													"match": "\\*\\/",
10312													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10313												},
10314												{
10315													"match": "\\*",
10316													"name": "comment.block.cpp"
10317												}
10318											]
10319										}
10320									}
10321								}
10322							]
10323						},
10324						"17": {
10325							"patterns": [
10326								{
10327									"include": "#inline_comment"
10328								}
10329							]
10330						},
10331						"18": {
10332							"patterns": [
10333								{
10334									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10335									"captures": {
10336										"1": {
10337											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10338										},
10339										"2": {
10340											"name": "comment.block.cpp"
10341										},
10342										"3": {
10343											"patterns": [
10344												{
10345													"match": "\\*\\/",
10346													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10347												},
10348												{
10349													"match": "\\*",
10350													"name": "comment.block.cpp"
10351												}
10352											]
10353										}
10354									}
10355								}
10356							]
10357						},
10358						"19": {
10359							"patterns": [
10360								{
10361									"include": "#inline_comment"
10362								}
10363							]
10364						},
10365						"20": {
10366							"patterns": [
10367								{
10368									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10369									"captures": {
10370										"1": {
10371											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10372										},
10373										"2": {
10374											"name": "comment.block.cpp"
10375										},
10376										"3": {
10377											"patterns": [
10378												{
10379													"match": "\\*\\/",
10380													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10381												},
10382												{
10383													"match": "\\*",
10384													"name": "comment.block.cpp"
10385												}
10386											]
10387										}
10388									}
10389								}
10390							]
10391						}
10392					}
10393				}
10394			]
10395		},
10396		"parameter": {
10397			"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\w)",
10398			"end": "(?:(?=\\))|(,))",
10399			"beginCaptures": {
10400				"1": {
10401					"patterns": [
10402						{
10403							"include": "#inline_comment"
10404						}
10405					]
10406				},
10407				"2": {
10408					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10409				},
10410				"3": {
10411					"name": "comment.block.cpp"
10412				},
10413				"4": {
10414					"patterns": [
10415						{
10416							"match": "\\*\\/",
10417							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10418						},
10419						{
10420							"match": "\\*",
10421							"name": "comment.block.cpp"
10422						}
10423					]
10424				}
10425			},
10426			"endCaptures": {
10427				"1": {
10428					"name": "punctuation.separator.delimiter.comma.cpp"
10429				}
10430			},
10431			"name": "meta.parameter.cpp",
10432			"patterns": [
10433				{
10434					"include": "#ever_present_context"
10435				},
10436				{
10437					"include": "#function_pointer_parameter"
10438				},
10439				{
10440					"include": "#decltype"
10441				},
10442				{
10443					"include": "#vararg_ellipses"
10444				},
10445				{
10446					"match": "((?:((?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))+)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\s)*+(?<!\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:double)|(?:signed)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:long)|(?:char)|(?:bool)|(?:int)))|((?:(?:uint_least32_t)|(?:uint_least64_t)|(?:uint_least16_t)|(?:uint_fast64_t)|(?:uint_least8_t)|(?:int_least64_t)|(?:int_least32_t)|(?:int_least16_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:int_fast8_t)|(?:suseconds_t)|(?:useconds_t)|(?:uintmax_t)|(?:uintmax_t)|(?:in_port_t)|(?:uintmax_t)|(?:in_addr_t)|(?:blksize_t)|(?:uintptr_t)|(?:intmax_t)|(?:intptr_t)|(?:blkcnt_t)|(?:intmax_t)|(?:u_quad_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:ssize_t)|(?:fixpt_t)|(?:qaddr_t)|(?:u_short)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:daddr_t)|(?:caddr_t)|(?:swblk_t)|(?:clock_t)|(?:segsz_t)|(?:nlink_t)|(?:time_t)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:u_char)|(?:int8_t)|(?:u_int)|(?:uid_t)|(?:off_t)|(?:pid_t)|(?:gid_t)|(?:dev_t)|(?:div_t)|(?:key_t)|(?:ino_t)|(?:id_t)|(?:id_t)|(?:uint))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_cond_t)|(?:pthread_attr_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\w)*_t))(?!\\w)|((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\b\\b(?<!\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wstatic|^static|\\Wextern|^extern|\\Wconst|^const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=,|\\)|=)",
10447					"captures": {
10448						"1": {
10449							"patterns": [
10450								{
10451									"include": "#storage_types"
10452								}
10453							]
10454						},
10455						"2": {
10456							"name": "storage.modifier.specifier.parameter.cpp"
10457						},
10458						"3": {
10459							"patterns": [
10460								{
10461									"include": "#inline_comment"
10462								}
10463							]
10464						},
10465						"4": {
10466							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10467						},
10468						"5": {
10469							"name": "comment.block.cpp"
10470						},
10471						"6": {
10472							"patterns": [
10473								{
10474									"match": "\\*\\/",
10475									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10476								},
10477								{
10478									"match": "\\*",
10479									"name": "comment.block.cpp"
10480								}
10481							]
10482						},
10483						"7": {
10484							"patterns": [
10485								{
10486									"include": "#inline_comment"
10487								}
10488							]
10489						},
10490						"8": {
10491							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10492						},
10493						"9": {
10494							"name": "comment.block.cpp"
10495						},
10496						"10": {
10497							"patterns": [
10498								{
10499									"match": "\\*\\/",
10500									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10501								},
10502								{
10503									"match": "\\*",
10504									"name": "comment.block.cpp"
10505								}
10506							]
10507						},
10508						"11": {
10509							"name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
10510						},
10511						"12": {
10512							"name": "storage.type.cpp storage.type.built-in.cpp"
10513						},
10514						"13": {
10515							"name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
10516						},
10517						"14": {
10518							"name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
10519						},
10520						"15": {
10521							"name": "entity.name.type.parameter.cpp"
10522						},
10523						"16": {
10524							"patterns": [
10525								{
10526									"include": "#inline_comment"
10527								}
10528							]
10529						},
10530						"17": {
10531							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10532						},
10533						"18": {
10534							"name": "comment.block.cpp"
10535						},
10536						"19": {
10537							"patterns": [
10538								{
10539									"match": "\\*\\/",
10540									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10541								},
10542								{
10543									"match": "\\*",
10544									"name": "comment.block.cpp"
10545								}
10546							]
10547						}
10548					}
10549				},
10550				{
10551					"include": "#storage_types"
10552				},
10553				{
10554					"include": "#scope_resolution_parameter_inner_generated"
10555				},
10556				{
10557					"match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
10558					"name": "storage.type.$0.cpp"
10559				},
10560				{
10561					"begin": "(?<==)",
10562					"end": "(?:(?=\\))|(,))",
10563					"beginCaptures": {},
10564					"endCaptures": {
10565						"1": {
10566							"name": "punctuation.separator.delimiter.comma.cpp"
10567						}
10568					},
10569					"patterns": [
10570						{
10571							"include": "#evaluation_context"
10572						}
10573					]
10574				},
10575				{
10576					"match": "\\=",
10577					"name": "keyword.operator.assignment.cpp"
10578				},
10579				{
10580					"match": "(?<!\\s|\\(|,|:)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\)|,|\\[|=|\\n)",
10581					"captures": {
10582						"1": {
10583							"patterns": [
10584								{
10585									"include": "#inline_comment"
10586								}
10587							]
10588						},
10589						"2": {
10590							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10591						},
10592						"3": {
10593							"name": "comment.block.cpp"
10594						},
10595						"4": {
10596							"patterns": [
10597								{
10598									"match": "\\*\\/",
10599									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10600								},
10601								{
10602									"match": "\\*",
10603									"name": "comment.block.cpp"
10604								}
10605							]
10606						},
10607						"5": {
10608							"name": "variable.parameter.cpp"
10609						},
10610						"6": {
10611							"patterns": [
10612								{
10613									"include": "#inline_comment"
10614								}
10615							]
10616						},
10617						"7": {
10618							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10619						},
10620						"8": {
10621							"name": "comment.block.cpp"
10622						},
10623						"9": {
10624							"patterns": [
10625								{
10626									"match": "\\*\\/",
10627									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10628								},
10629								{
10630									"match": "\\*",
10631									"name": "comment.block.cpp"
10632								}
10633							]
10634						}
10635					}
10636				},
10637				{
10638					"include": "#attributes_context"
10639				},
10640				{
10641					"begin": "\\[",
10642					"end": "\\]",
10643					"beginCaptures": {
10644						"0": {
10645							"name": "punctuation.definition.begin.bracket.square.array.type.cpp"
10646						}
10647					},
10648					"endCaptures": {
10649						"0": {
10650							"name": "punctuation.definition.end.bracket.square.array.type.cpp"
10651						}
10652					},
10653					"name": "meta.bracket.square.array.cpp",
10654					"patterns": [
10655						{
10656							"include": "#evaluation_context"
10657						}
10658					]
10659				},
10660				{
10661					"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?<!\\Wstruct|^struct|\\Wclass|^class|\\Wunion|^union|\\Wenum|^enum)",
10662					"name": "entity.name.type.parameter.cpp"
10663				},
10664				{
10665					"include": "#template_call_range"
10666				},
10667				{
10668					"match": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*))",
10669					"captures": {
10670						"0": {
10671							"patterns": [
10672								{
10673									"match": "\\*",
10674									"name": "storage.modifier.pointer.cpp"
10675								},
10676								{
10677									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
10678									"captures": {
10679										"1": {
10680											"patterns": [
10681												{
10682													"include": "#inline_comment"
10683												}
10684											]
10685										},
10686										"2": {
10687											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10688										},
10689										"3": {
10690											"name": "comment.block.cpp"
10691										},
10692										"4": {
10693											"patterns": [
10694												{
10695													"match": "\\*\\/",
10696													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10697												},
10698												{
10699													"match": "\\*",
10700													"name": "comment.block.cpp"
10701												}
10702											]
10703										}
10704									},
10705									"name": "invalid.illegal.reference-type.cpp"
10706								},
10707								{
10708									"match": "\\&",
10709									"name": "storage.modifier.reference.cpp"
10710								}
10711							]
10712						},
10713						"1": {
10714							"patterns": [
10715								{
10716									"include": "#inline_comment"
10717								}
10718							]
10719						},
10720						"2": {
10721							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10722						},
10723						"3": {
10724							"name": "comment.block.cpp"
10725						},
10726						"4": {
10727							"patterns": [
10728								{
10729									"match": "\\*\\/",
10730									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10731								},
10732								{
10733									"match": "\\*",
10734									"name": "comment.block.cpp"
10735								}
10736							]
10737						},
10738						"5": {
10739							"patterns": [
10740								{
10741									"include": "#inline_comment"
10742								}
10743							]
10744						},
10745						"6": {
10746							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10747						},
10748						"7": {
10749							"name": "comment.block.cpp"
10750						},
10751						"8": {
10752							"patterns": [
10753								{
10754									"match": "\\*\\/",
10755									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10756								},
10757								{
10758									"match": "\\*",
10759									"name": "comment.block.cpp"
10760								}
10761							]
10762						}
10763					}
10764				}
10765			]
10766		},
10767		"parameter_class": {
10768			"match": "(class)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)",
10769			"captures": {
10770				"1": {
10771					"name": "storage.type.class.parameter.cpp"
10772				},
10773				"2": {
10774					"patterns": [
10775						{
10776							"include": "#inline_comment"
10777						}
10778					]
10779				},
10780				"3": {
10781					"patterns": [
10782						{
10783							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10784							"captures": {
10785								"1": {
10786									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10787								},
10788								"2": {
10789									"name": "comment.block.cpp"
10790								},
10791								"3": {
10792									"patterns": [
10793										{
10794											"match": "\\*\\/",
10795											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10796										},
10797										{
10798											"match": "\\*",
10799											"name": "comment.block.cpp"
10800										}
10801									]
10802								}
10803							}
10804						}
10805					]
10806				},
10807				"4": {
10808					"name": "entity.name.type.class.parameter.cpp"
10809				},
10810				"5": {
10811					"patterns": [
10812						{
10813							"include": "#inline_comment"
10814						}
10815					]
10816				},
10817				"6": {
10818					"patterns": [
10819						{
10820							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10821							"captures": {
10822								"1": {
10823									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10824								},
10825								"2": {
10826									"name": "comment.block.cpp"
10827								},
10828								"3": {
10829									"patterns": [
10830										{
10831											"match": "\\*\\/",
10832											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10833										},
10834										{
10835											"match": "\\*",
10836											"name": "comment.block.cpp"
10837										}
10838									]
10839								}
10840							}
10841						}
10842					]
10843				},
10844				"7": {
10845					"patterns": [
10846						{
10847							"match": "\\*",
10848							"name": "storage.modifier.pointer.cpp"
10849						},
10850						{
10851							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
10852							"captures": {
10853								"1": {
10854									"patterns": [
10855										{
10856											"include": "#inline_comment"
10857										}
10858									]
10859								},
10860								"2": {
10861									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10862								},
10863								"3": {
10864									"name": "comment.block.cpp"
10865								},
10866								"4": {
10867									"patterns": [
10868										{
10869											"match": "\\*\\/",
10870											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10871										},
10872										{
10873											"match": "\\*",
10874											"name": "comment.block.cpp"
10875										}
10876									]
10877								}
10878							},
10879							"name": "invalid.illegal.reference-type.cpp"
10880						},
10881						{
10882							"match": "\\&",
10883							"name": "storage.modifier.reference.cpp"
10884						}
10885					]
10886				},
10887				"8": {
10888					"patterns": [
10889						{
10890							"include": "#inline_comment"
10891						}
10892					]
10893				},
10894				"9": {
10895					"patterns": [
10896						{
10897							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10898							"captures": {
10899								"1": {
10900									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10901								},
10902								"2": {
10903									"name": "comment.block.cpp"
10904								},
10905								"3": {
10906									"patterns": [
10907										{
10908											"match": "\\*\\/",
10909											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10910										},
10911										{
10912											"match": "\\*",
10913											"name": "comment.block.cpp"
10914										}
10915									]
10916								}
10917							}
10918						}
10919					]
10920				},
10921				"10": {
10922					"patterns": [
10923						{
10924							"include": "#inline_comment"
10925						}
10926					]
10927				},
10928				"11": {
10929					"patterns": [
10930						{
10931							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10932							"captures": {
10933								"1": {
10934									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10935								},
10936								"2": {
10937									"name": "comment.block.cpp"
10938								},
10939								"3": {
10940									"patterns": [
10941										{
10942											"match": "\\*\\/",
10943											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10944										},
10945										{
10946											"match": "\\*",
10947											"name": "comment.block.cpp"
10948										}
10949									]
10950								}
10951							}
10952						}
10953					]
10954				},
10955				"12": {
10956					"patterns": [
10957						{
10958							"include": "#inline_comment"
10959						}
10960					]
10961				},
10962				"13": {
10963					"patterns": [
10964						{
10965							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
10966							"captures": {
10967								"1": {
10968									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
10969								},
10970								"2": {
10971									"name": "comment.block.cpp"
10972								},
10973								"3": {
10974									"patterns": [
10975										{
10976											"match": "\\*\\/",
10977											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
10978										},
10979										{
10980											"match": "\\*",
10981											"name": "comment.block.cpp"
10982										}
10983									]
10984								}
10985							}
10986						}
10987					]
10988				},
10989				"14": {
10990					"name": "variable.other.object.declare.cpp"
10991				},
10992				"15": {
10993					"patterns": [
10994						{
10995							"include": "#inline_comment"
10996						}
10997					]
10998				},
10999				"16": {
11000					"patterns": [
11001						{
11002							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11003							"captures": {
11004								"1": {
11005									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11006								},
11007								"2": {
11008									"name": "comment.block.cpp"
11009								},
11010								"3": {
11011									"patterns": [
11012										{
11013											"match": "\\*\\/",
11014											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11015										},
11016										{
11017											"match": "\\*",
11018											"name": "comment.block.cpp"
11019										}
11020									]
11021								}
11022							}
11023						}
11024					]
11025				},
11026				"17": {
11027					"patterns": [
11028						{
11029							"include": "#inline_comment"
11030						}
11031					]
11032				},
11033				"18": {
11034					"patterns": [
11035						{
11036							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11037							"captures": {
11038								"1": {
11039									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11040								},
11041								"2": {
11042									"name": "comment.block.cpp"
11043								},
11044								"3": {
11045									"patterns": [
11046										{
11047											"match": "\\*\\/",
11048											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11049										},
11050										{
11051											"match": "\\*",
11052											"name": "comment.block.cpp"
11053										}
11054									]
11055								}
11056							}
11057						}
11058					]
11059				},
11060				"19": {
11061					"patterns": [
11062						{
11063							"include": "#inline_comment"
11064						}
11065					]
11066				},
11067				"20": {
11068					"patterns": [
11069						{
11070							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11071							"captures": {
11072								"1": {
11073									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11074								},
11075								"2": {
11076									"name": "comment.block.cpp"
11077								},
11078								"3": {
11079									"patterns": [
11080										{
11081											"match": "\\*\\/",
11082											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11083										},
11084										{
11085											"match": "\\*",
11086											"name": "comment.block.cpp"
11087										}
11088									]
11089								}
11090							}
11091						}
11092					]
11093				}
11094			}
11095		},
11096		"parameter_enum": {
11097			"match": "(enum)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)",
11098			"captures": {
11099				"1": {
11100					"name": "storage.type.enum.parameter.cpp"
11101				},
11102				"2": {
11103					"patterns": [
11104						{
11105							"include": "#inline_comment"
11106						}
11107					]
11108				},
11109				"3": {
11110					"patterns": [
11111						{
11112							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11113							"captures": {
11114								"1": {
11115									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11116								},
11117								"2": {
11118									"name": "comment.block.cpp"
11119								},
11120								"3": {
11121									"patterns": [
11122										{
11123											"match": "\\*\\/",
11124											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11125										},
11126										{
11127											"match": "\\*",
11128											"name": "comment.block.cpp"
11129										}
11130									]
11131								}
11132							}
11133						}
11134					]
11135				},
11136				"4": {
11137					"name": "entity.name.type.enum.parameter.cpp"
11138				},
11139				"5": {
11140					"patterns": [
11141						{
11142							"include": "#inline_comment"
11143						}
11144					]
11145				},
11146				"6": {
11147					"patterns": [
11148						{
11149							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11150							"captures": {
11151								"1": {
11152									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11153								},
11154								"2": {
11155									"name": "comment.block.cpp"
11156								},
11157								"3": {
11158									"patterns": [
11159										{
11160											"match": "\\*\\/",
11161											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11162										},
11163										{
11164											"match": "\\*",
11165											"name": "comment.block.cpp"
11166										}
11167									]
11168								}
11169							}
11170						}
11171					]
11172				},
11173				"7": {
11174					"patterns": [
11175						{
11176							"match": "\\*",
11177							"name": "storage.modifier.pointer.cpp"
11178						},
11179						{
11180							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
11181							"captures": {
11182								"1": {
11183									"patterns": [
11184										{
11185											"include": "#inline_comment"
11186										}
11187									]
11188								},
11189								"2": {
11190									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11191								},
11192								"3": {
11193									"name": "comment.block.cpp"
11194								},
11195								"4": {
11196									"patterns": [
11197										{
11198											"match": "\\*\\/",
11199											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11200										},
11201										{
11202											"match": "\\*",
11203											"name": "comment.block.cpp"
11204										}
11205									]
11206								}
11207							},
11208							"name": "invalid.illegal.reference-type.cpp"
11209						},
11210						{
11211							"match": "\\&",
11212							"name": "storage.modifier.reference.cpp"
11213						}
11214					]
11215				},
11216				"8": {
11217					"patterns": [
11218						{
11219							"include": "#inline_comment"
11220						}
11221					]
11222				},
11223				"9": {
11224					"patterns": [
11225						{
11226							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11227							"captures": {
11228								"1": {
11229									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11230								},
11231								"2": {
11232									"name": "comment.block.cpp"
11233								},
11234								"3": {
11235									"patterns": [
11236										{
11237											"match": "\\*\\/",
11238											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11239										},
11240										{
11241											"match": "\\*",
11242											"name": "comment.block.cpp"
11243										}
11244									]
11245								}
11246							}
11247						}
11248					]
11249				},
11250				"10": {
11251					"patterns": [
11252						{
11253							"include": "#inline_comment"
11254						}
11255					]
11256				},
11257				"11": {
11258					"patterns": [
11259						{
11260							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11261							"captures": {
11262								"1": {
11263									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11264								},
11265								"2": {
11266									"name": "comment.block.cpp"
11267								},
11268								"3": {
11269									"patterns": [
11270										{
11271											"match": "\\*\\/",
11272											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11273										},
11274										{
11275											"match": "\\*",
11276											"name": "comment.block.cpp"
11277										}
11278									]
11279								}
11280							}
11281						}
11282					]
11283				},
11284				"12": {
11285					"patterns": [
11286						{
11287							"include": "#inline_comment"
11288						}
11289					]
11290				},
11291				"13": {
11292					"patterns": [
11293						{
11294							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11295							"captures": {
11296								"1": {
11297									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11298								},
11299								"2": {
11300									"name": "comment.block.cpp"
11301								},
11302								"3": {
11303									"patterns": [
11304										{
11305											"match": "\\*\\/",
11306											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11307										},
11308										{
11309											"match": "\\*",
11310											"name": "comment.block.cpp"
11311										}
11312									]
11313								}
11314							}
11315						}
11316					]
11317				},
11318				"14": {
11319					"name": "variable.other.object.declare.cpp"
11320				},
11321				"15": {
11322					"patterns": [
11323						{
11324							"include": "#inline_comment"
11325						}
11326					]
11327				},
11328				"16": {
11329					"patterns": [
11330						{
11331							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11332							"captures": {
11333								"1": {
11334									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11335								},
11336								"2": {
11337									"name": "comment.block.cpp"
11338								},
11339								"3": {
11340									"patterns": [
11341										{
11342											"match": "\\*\\/",
11343											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11344										},
11345										{
11346											"match": "\\*",
11347											"name": "comment.block.cpp"
11348										}
11349									]
11350								}
11351							}
11352						}
11353					]
11354				},
11355				"17": {
11356					"patterns": [
11357						{
11358							"include": "#inline_comment"
11359						}
11360					]
11361				},
11362				"18": {
11363					"patterns": [
11364						{
11365							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11366							"captures": {
11367								"1": {
11368									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11369								},
11370								"2": {
11371									"name": "comment.block.cpp"
11372								},
11373								"3": {
11374									"patterns": [
11375										{
11376											"match": "\\*\\/",
11377											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11378										},
11379										{
11380											"match": "\\*",
11381											"name": "comment.block.cpp"
11382										}
11383									]
11384								}
11385							}
11386						}
11387					]
11388				},
11389				"19": {
11390					"patterns": [
11391						{
11392							"include": "#inline_comment"
11393						}
11394					]
11395				},
11396				"20": {
11397					"patterns": [
11398						{
11399							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11400							"captures": {
11401								"1": {
11402									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11403								},
11404								"2": {
11405									"name": "comment.block.cpp"
11406								},
11407								"3": {
11408									"patterns": [
11409										{
11410											"match": "\\*\\/",
11411											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11412										},
11413										{
11414											"match": "\\*",
11415											"name": "comment.block.cpp"
11416										}
11417									]
11418								}
11419							}
11420						}
11421					]
11422				}
11423			}
11424		},
11425		"parameter_or_maybe_value": {
11426			"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\w)",
11427			"end": "(?:(?=\\))|(,))",
11428			"beginCaptures": {
11429				"1": {
11430					"patterns": [
11431						{
11432							"include": "#inline_comment"
11433						}
11434					]
11435				},
11436				"2": {
11437					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11438				},
11439				"3": {
11440					"name": "comment.block.cpp"
11441				},
11442				"4": {
11443					"patterns": [
11444						{
11445							"match": "\\*\\/",
11446							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11447						},
11448						{
11449							"match": "\\*",
11450							"name": "comment.block.cpp"
11451						}
11452					]
11453				}
11454			},
11455			"endCaptures": {
11456				"1": {
11457					"name": "punctuation.separator.delimiter.comma.cpp"
11458				}
11459			},
11460			"name": "meta.parameter.cpp",
11461			"patterns": [
11462				{
11463					"include": "#ever_present_context"
11464				},
11465				{
11466					"include": "#function_pointer_parameter"
11467				},
11468				{
11469					"include": "#memory_operators"
11470				},
11471				{
11472					"include": "#builtin_storage_type_initilizer"
11473				},
11474				{
11475					"include": "#curly_initializer"
11476				},
11477				{
11478					"include": "#decltype"
11479				},
11480				{
11481					"include": "#vararg_ellipses"
11482				},
11483				{
11484					"match": "((?:((?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))+)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:\\s)*+(?<!\\w)(?:(?:(?:((?:(?:unsigned)|(?:wchar_t)|(?:double)|(?:signed)|(?:short)|(?:float)|(?:auto)|(?:void)|(?:long)|(?:char)|(?:bool)|(?:int)))|((?:(?:uint_least32_t)|(?:uint_least64_t)|(?:uint_least16_t)|(?:uint_fast64_t)|(?:uint_least8_t)|(?:int_least64_t)|(?:int_least32_t)|(?:int_least16_t)|(?:uint_fast16_t)|(?:uint_fast32_t)|(?:int_least8_t)|(?:int_fast16_t)|(?:int_fast32_t)|(?:int_fast64_t)|(?:uint_fast8_t)|(?:int_fast8_t)|(?:suseconds_t)|(?:useconds_t)|(?:uintmax_t)|(?:uintmax_t)|(?:in_port_t)|(?:uintmax_t)|(?:in_addr_t)|(?:blksize_t)|(?:uintptr_t)|(?:intmax_t)|(?:intptr_t)|(?:blkcnt_t)|(?:intmax_t)|(?:u_quad_t)|(?:uint16_t)|(?:uint32_t)|(?:uint64_t)|(?:ssize_t)|(?:fixpt_t)|(?:qaddr_t)|(?:u_short)|(?:int16_t)|(?:int32_t)|(?:int64_t)|(?:uint8_t)|(?:daddr_t)|(?:caddr_t)|(?:swblk_t)|(?:clock_t)|(?:segsz_t)|(?:nlink_t)|(?:time_t)|(?:u_long)|(?:ushort)|(?:quad_t)|(?:mode_t)|(?:size_t)|(?:u_char)|(?:int8_t)|(?:u_int)|(?:uid_t)|(?:off_t)|(?:pid_t)|(?:gid_t)|(?:dev_t)|(?:div_t)|(?:key_t)|(?:ino_t)|(?:id_t)|(?:id_t)|(?:uint))))|((?:(?:pthread_rwlockattr_t)|(?:pthread_mutexattr_t)|(?:pthread_condattr_t)|(?:pthread_rwlock_t)|(?:pthread_mutex_t)|(?:pthread_cond_t)|(?:pthread_attr_t)|(?:pthread_once_t)|(?:pthread_key_t)|(?:pthread_t))))|([a-zA-Z_](?:\\w)*_t))(?!\\w)|((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\b\\b(?<!\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wstatic|^static|\\Wextern|^extern|\\Wconst|^const)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=,|\\)|=)",
11485					"captures": {
11486						"1": {
11487							"patterns": [
11488								{
11489									"include": "#storage_types"
11490								}
11491							]
11492						},
11493						"2": {
11494							"name": "storage.modifier.specifier.parameter.cpp"
11495						},
11496						"3": {
11497							"patterns": [
11498								{
11499									"include": "#inline_comment"
11500								}
11501							]
11502						},
11503						"4": {
11504							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11505						},
11506						"5": {
11507							"name": "comment.block.cpp"
11508						},
11509						"6": {
11510							"patterns": [
11511								{
11512									"match": "\\*\\/",
11513									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11514								},
11515								{
11516									"match": "\\*",
11517									"name": "comment.block.cpp"
11518								}
11519							]
11520						},
11521						"7": {
11522							"patterns": [
11523								{
11524									"include": "#inline_comment"
11525								}
11526							]
11527						},
11528						"8": {
11529							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11530						},
11531						"9": {
11532							"name": "comment.block.cpp"
11533						},
11534						"10": {
11535							"patterns": [
11536								{
11537									"match": "\\*\\/",
11538									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11539								},
11540								{
11541									"match": "\\*",
11542									"name": "comment.block.cpp"
11543								}
11544							]
11545						},
11546						"11": {
11547							"name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
11548						},
11549						"12": {
11550							"name": "storage.type.cpp storage.type.built-in.cpp"
11551						},
11552						"13": {
11553							"name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
11554						},
11555						"14": {
11556							"name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
11557						},
11558						"15": {
11559							"name": "entity.name.type.parameter.cpp"
11560						},
11561						"16": {
11562							"patterns": [
11563								{
11564									"include": "#inline_comment"
11565								}
11566							]
11567						},
11568						"17": {
11569							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11570						},
11571						"18": {
11572							"name": "comment.block.cpp"
11573						},
11574						"19": {
11575							"patterns": [
11576								{
11577									"match": "\\*\\/",
11578									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11579								},
11580								{
11581									"match": "\\*",
11582									"name": "comment.block.cpp"
11583								}
11584							]
11585						}
11586					}
11587				},
11588				{
11589					"include": "#storage_types"
11590				},
11591				{
11592					"include": "#function_call"
11593				},
11594				{
11595					"include": "#scope_resolution_parameter_inner_generated"
11596				},
11597				{
11598					"match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
11599					"name": "storage.type.$0.cpp"
11600				},
11601				{
11602					"begin": "(?<==)",
11603					"end": "(?:(?=\\))|(,))",
11604					"beginCaptures": {},
11605					"endCaptures": {
11606						"1": {
11607							"name": "punctuation.separator.delimiter.comma.cpp"
11608						}
11609					},
11610					"patterns": [
11611						{
11612							"include": "#evaluation_context"
11613						}
11614					]
11615				},
11616				{
11617					"match": "(?<!\\s|\\(|,|:)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=(?:\\)|,|\\[|=|\\/\\/|(?:(?:\\n)|$)))",
11618					"captures": {
11619						"1": {
11620							"patterns": [
11621								{
11622									"include": "#inline_comment"
11623								}
11624							]
11625						},
11626						"2": {
11627							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11628						},
11629						"3": {
11630							"name": "comment.block.cpp"
11631						},
11632						"4": {
11633							"patterns": [
11634								{
11635									"match": "\\*\\/",
11636									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11637								},
11638								{
11639									"match": "\\*",
11640									"name": "comment.block.cpp"
11641								}
11642							]
11643						},
11644						"5": {
11645							"name": "variable.parameter.cpp"
11646						},
11647						"6": {
11648							"patterns": [
11649								{
11650									"include": "#inline_comment"
11651								}
11652							]
11653						},
11654						"7": {
11655							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11656						},
11657						"8": {
11658							"name": "comment.block.cpp"
11659						},
11660						"9": {
11661							"patterns": [
11662								{
11663									"match": "\\*\\/",
11664									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11665								},
11666								{
11667									"match": "\\*",
11668									"name": "comment.block.cpp"
11669								}
11670							]
11671						}
11672					}
11673				},
11674				{
11675					"include": "#attributes_context"
11676				},
11677				{
11678					"begin": "\\[",
11679					"end": "\\]",
11680					"beginCaptures": {
11681						"0": {
11682							"name": "punctuation.definition.begin.bracket.square.array.type.cpp"
11683						}
11684					},
11685					"endCaptures": {
11686						"0": {
11687							"name": "punctuation.definition.end.bracket.square.array.type.cpp"
11688						}
11689					},
11690					"name": "meta.bracket.square.array.cpp",
11691					"patterns": [
11692						{
11693							"include": "#evaluation_context"
11694						}
11695					]
11696				},
11697				{
11698					"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b(?<!\\Wstruct|^struct|\\Wclass|^class|\\Wunion|^union|\\Wenum|^enum)",
11699					"name": "entity.name.type.parameter.cpp"
11700				},
11701				{
11702					"include": "#template_call_range"
11703				},
11704				{
11705					"match": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*))",
11706					"captures": {
11707						"0": {
11708							"patterns": [
11709								{
11710									"match": "\\*",
11711									"name": "storage.modifier.pointer.cpp"
11712								},
11713								{
11714									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
11715									"captures": {
11716										"1": {
11717											"patterns": [
11718												{
11719													"include": "#inline_comment"
11720												}
11721											]
11722										},
11723										"2": {
11724											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11725										},
11726										"3": {
11727											"name": "comment.block.cpp"
11728										},
11729										"4": {
11730											"patterns": [
11731												{
11732													"match": "\\*\\/",
11733													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11734												},
11735												{
11736													"match": "\\*",
11737													"name": "comment.block.cpp"
11738												}
11739											]
11740										}
11741									},
11742									"name": "invalid.illegal.reference-type.cpp"
11743								},
11744								{
11745									"match": "\\&",
11746									"name": "storage.modifier.reference.cpp"
11747								}
11748							]
11749						},
11750						"1": {
11751							"patterns": [
11752								{
11753									"include": "#inline_comment"
11754								}
11755							]
11756						},
11757						"2": {
11758							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11759						},
11760						"3": {
11761							"name": "comment.block.cpp"
11762						},
11763						"4": {
11764							"patterns": [
11765								{
11766									"match": "\\*\\/",
11767									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11768								},
11769								{
11770									"match": "\\*",
11771									"name": "comment.block.cpp"
11772								}
11773							]
11774						},
11775						"5": {
11776							"patterns": [
11777								{
11778									"include": "#inline_comment"
11779								}
11780							]
11781						},
11782						"6": {
11783							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11784						},
11785						"7": {
11786							"name": "comment.block.cpp"
11787						},
11788						"8": {
11789							"patterns": [
11790								{
11791									"match": "\\*\\/",
11792									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11793								},
11794								{
11795									"match": "\\*",
11796									"name": "comment.block.cpp"
11797								}
11798							]
11799						}
11800					}
11801				},
11802				{
11803					"include": "#evaluation_context"
11804				}
11805			]
11806		},
11807		"parameter_struct": {
11808			"match": "(struct)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)",
11809			"captures": {
11810				"1": {
11811					"name": "storage.type.struct.parameter.cpp"
11812				},
11813				"2": {
11814					"patterns": [
11815						{
11816							"include": "#inline_comment"
11817						}
11818					]
11819				},
11820				"3": {
11821					"patterns": [
11822						{
11823							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11824							"captures": {
11825								"1": {
11826									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11827								},
11828								"2": {
11829									"name": "comment.block.cpp"
11830								},
11831								"3": {
11832									"patterns": [
11833										{
11834											"match": "\\*\\/",
11835											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11836										},
11837										{
11838											"match": "\\*",
11839											"name": "comment.block.cpp"
11840										}
11841									]
11842								}
11843							}
11844						}
11845					]
11846				},
11847				"4": {
11848					"name": "entity.name.type.struct.parameter.cpp"
11849				},
11850				"5": {
11851					"patterns": [
11852						{
11853							"include": "#inline_comment"
11854						}
11855					]
11856				},
11857				"6": {
11858					"patterns": [
11859						{
11860							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11861							"captures": {
11862								"1": {
11863									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11864								},
11865								"2": {
11866									"name": "comment.block.cpp"
11867								},
11868								"3": {
11869									"patterns": [
11870										{
11871											"match": "\\*\\/",
11872											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11873										},
11874										{
11875											"match": "\\*",
11876											"name": "comment.block.cpp"
11877										}
11878									]
11879								}
11880							}
11881						}
11882					]
11883				},
11884				"7": {
11885					"patterns": [
11886						{
11887							"match": "\\*",
11888							"name": "storage.modifier.pointer.cpp"
11889						},
11890						{
11891							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
11892							"captures": {
11893								"1": {
11894									"patterns": [
11895										{
11896											"include": "#inline_comment"
11897										}
11898									]
11899								},
11900								"2": {
11901									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11902								},
11903								"3": {
11904									"name": "comment.block.cpp"
11905								},
11906								"4": {
11907									"patterns": [
11908										{
11909											"match": "\\*\\/",
11910											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11911										},
11912										{
11913											"match": "\\*",
11914											"name": "comment.block.cpp"
11915										}
11916									]
11917								}
11918							},
11919							"name": "invalid.illegal.reference-type.cpp"
11920						},
11921						{
11922							"match": "\\&",
11923							"name": "storage.modifier.reference.cpp"
11924						}
11925					]
11926				},
11927				"8": {
11928					"patterns": [
11929						{
11930							"include": "#inline_comment"
11931						}
11932					]
11933				},
11934				"9": {
11935					"patterns": [
11936						{
11937							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11938							"captures": {
11939								"1": {
11940									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11941								},
11942								"2": {
11943									"name": "comment.block.cpp"
11944								},
11945								"3": {
11946									"patterns": [
11947										{
11948											"match": "\\*\\/",
11949											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11950										},
11951										{
11952											"match": "\\*",
11953											"name": "comment.block.cpp"
11954										}
11955									]
11956								}
11957							}
11958						}
11959					]
11960				},
11961				"10": {
11962					"patterns": [
11963						{
11964							"include": "#inline_comment"
11965						}
11966					]
11967				},
11968				"11": {
11969					"patterns": [
11970						{
11971							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
11972							"captures": {
11973								"1": {
11974									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
11975								},
11976								"2": {
11977									"name": "comment.block.cpp"
11978								},
11979								"3": {
11980									"patterns": [
11981										{
11982											"match": "\\*\\/",
11983											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
11984										},
11985										{
11986											"match": "\\*",
11987											"name": "comment.block.cpp"
11988										}
11989									]
11990								}
11991							}
11992						}
11993					]
11994				},
11995				"12": {
11996					"patterns": [
11997						{
11998							"include": "#inline_comment"
11999						}
12000					]
12001				},
12002				"13": {
12003					"patterns": [
12004						{
12005							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12006							"captures": {
12007								"1": {
12008									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12009								},
12010								"2": {
12011									"name": "comment.block.cpp"
12012								},
12013								"3": {
12014									"patterns": [
12015										{
12016											"match": "\\*\\/",
12017											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12018										},
12019										{
12020											"match": "\\*",
12021											"name": "comment.block.cpp"
12022										}
12023									]
12024								}
12025							}
12026						}
12027					]
12028				},
12029				"14": {
12030					"name": "variable.other.object.declare.cpp"
12031				},
12032				"15": {
12033					"patterns": [
12034						{
12035							"include": "#inline_comment"
12036						}
12037					]
12038				},
12039				"16": {
12040					"patterns": [
12041						{
12042							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12043							"captures": {
12044								"1": {
12045									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12046								},
12047								"2": {
12048									"name": "comment.block.cpp"
12049								},
12050								"3": {
12051									"patterns": [
12052										{
12053											"match": "\\*\\/",
12054											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12055										},
12056										{
12057											"match": "\\*",
12058											"name": "comment.block.cpp"
12059										}
12060									]
12061								}
12062							}
12063						}
12064					]
12065				},
12066				"17": {
12067					"patterns": [
12068						{
12069							"include": "#inline_comment"
12070						}
12071					]
12072				},
12073				"18": {
12074					"patterns": [
12075						{
12076							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12077							"captures": {
12078								"1": {
12079									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12080								},
12081								"2": {
12082									"name": "comment.block.cpp"
12083								},
12084								"3": {
12085									"patterns": [
12086										{
12087											"match": "\\*\\/",
12088											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12089										},
12090										{
12091											"match": "\\*",
12092											"name": "comment.block.cpp"
12093										}
12094									]
12095								}
12096							}
12097						}
12098					]
12099				},
12100				"19": {
12101					"patterns": [
12102						{
12103							"include": "#inline_comment"
12104						}
12105					]
12106				},
12107				"20": {
12108					"patterns": [
12109						{
12110							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12111							"captures": {
12112								"1": {
12113									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12114								},
12115								"2": {
12116									"name": "comment.block.cpp"
12117								},
12118								"3": {
12119									"patterns": [
12120										{
12121											"match": "\\*\\/",
12122											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12123										},
12124										{
12125											"match": "\\*",
12126											"name": "comment.block.cpp"
12127										}
12128									]
12129								}
12130							}
12131						}
12132					]
12133				}
12134			}
12135		},
12136		"parameter_union": {
12137			"match": "(union)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))?)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:\\[((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\]((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=,|\\)|\\n)",
12138			"captures": {
12139				"1": {
12140					"name": "storage.type.union.parameter.cpp"
12141				},
12142				"2": {
12143					"patterns": [
12144						{
12145							"include": "#inline_comment"
12146						}
12147					]
12148				},
12149				"3": {
12150					"patterns": [
12151						{
12152							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12153							"captures": {
12154								"1": {
12155									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12156								},
12157								"2": {
12158									"name": "comment.block.cpp"
12159								},
12160								"3": {
12161									"patterns": [
12162										{
12163											"match": "\\*\\/",
12164											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12165										},
12166										{
12167											"match": "\\*",
12168											"name": "comment.block.cpp"
12169										}
12170									]
12171								}
12172							}
12173						}
12174					]
12175				},
12176				"4": {
12177					"name": "entity.name.type.union.parameter.cpp"
12178				},
12179				"5": {
12180					"patterns": [
12181						{
12182							"include": "#inline_comment"
12183						}
12184					]
12185				},
12186				"6": {
12187					"patterns": [
12188						{
12189							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12190							"captures": {
12191								"1": {
12192									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12193								},
12194								"2": {
12195									"name": "comment.block.cpp"
12196								},
12197								"3": {
12198									"patterns": [
12199										{
12200											"match": "\\*\\/",
12201											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12202										},
12203										{
12204											"match": "\\*",
12205											"name": "comment.block.cpp"
12206										}
12207									]
12208								}
12209							}
12210						}
12211					]
12212				},
12213				"7": {
12214					"patterns": [
12215						{
12216							"match": "\\*",
12217							"name": "storage.modifier.pointer.cpp"
12218						},
12219						{
12220							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
12221							"captures": {
12222								"1": {
12223									"patterns": [
12224										{
12225											"include": "#inline_comment"
12226										}
12227									]
12228								},
12229								"2": {
12230									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12231								},
12232								"3": {
12233									"name": "comment.block.cpp"
12234								},
12235								"4": {
12236									"patterns": [
12237										{
12238											"match": "\\*\\/",
12239											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12240										},
12241										{
12242											"match": "\\*",
12243											"name": "comment.block.cpp"
12244										}
12245									]
12246								}
12247							},
12248							"name": "invalid.illegal.reference-type.cpp"
12249						},
12250						{
12251							"match": "\\&",
12252							"name": "storage.modifier.reference.cpp"
12253						}
12254					]
12255				},
12256				"8": {
12257					"patterns": [
12258						{
12259							"include": "#inline_comment"
12260						}
12261					]
12262				},
12263				"9": {
12264					"patterns": [
12265						{
12266							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12267							"captures": {
12268								"1": {
12269									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12270								},
12271								"2": {
12272									"name": "comment.block.cpp"
12273								},
12274								"3": {
12275									"patterns": [
12276										{
12277											"match": "\\*\\/",
12278											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12279										},
12280										{
12281											"match": "\\*",
12282											"name": "comment.block.cpp"
12283										}
12284									]
12285								}
12286							}
12287						}
12288					]
12289				},
12290				"10": {
12291					"patterns": [
12292						{
12293							"include": "#inline_comment"
12294						}
12295					]
12296				},
12297				"11": {
12298					"patterns": [
12299						{
12300							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12301							"captures": {
12302								"1": {
12303									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12304								},
12305								"2": {
12306									"name": "comment.block.cpp"
12307								},
12308								"3": {
12309									"patterns": [
12310										{
12311											"match": "\\*\\/",
12312											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12313										},
12314										{
12315											"match": "\\*",
12316											"name": "comment.block.cpp"
12317										}
12318									]
12319								}
12320							}
12321						}
12322					]
12323				},
12324				"12": {
12325					"patterns": [
12326						{
12327							"include": "#inline_comment"
12328						}
12329					]
12330				},
12331				"13": {
12332					"patterns": [
12333						{
12334							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12335							"captures": {
12336								"1": {
12337									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12338								},
12339								"2": {
12340									"name": "comment.block.cpp"
12341								},
12342								"3": {
12343									"patterns": [
12344										{
12345											"match": "\\*\\/",
12346											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12347										},
12348										{
12349											"match": "\\*",
12350											"name": "comment.block.cpp"
12351										}
12352									]
12353								}
12354							}
12355						}
12356					]
12357				},
12358				"14": {
12359					"name": "variable.other.object.declare.cpp"
12360				},
12361				"15": {
12362					"patterns": [
12363						{
12364							"include": "#inline_comment"
12365						}
12366					]
12367				},
12368				"16": {
12369					"patterns": [
12370						{
12371							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12372							"captures": {
12373								"1": {
12374									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12375								},
12376								"2": {
12377									"name": "comment.block.cpp"
12378								},
12379								"3": {
12380									"patterns": [
12381										{
12382											"match": "\\*\\/",
12383											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12384										},
12385										{
12386											"match": "\\*",
12387											"name": "comment.block.cpp"
12388										}
12389									]
12390								}
12391							}
12392						}
12393					]
12394				},
12395				"17": {
12396					"patterns": [
12397						{
12398							"include": "#inline_comment"
12399						}
12400					]
12401				},
12402				"18": {
12403					"patterns": [
12404						{
12405							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12406							"captures": {
12407								"1": {
12408									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12409								},
12410								"2": {
12411									"name": "comment.block.cpp"
12412								},
12413								"3": {
12414									"patterns": [
12415										{
12416											"match": "\\*\\/",
12417											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12418										},
12419										{
12420											"match": "\\*",
12421											"name": "comment.block.cpp"
12422										}
12423									]
12424								}
12425							}
12426						}
12427					]
12428				},
12429				"19": {
12430					"patterns": [
12431						{
12432							"include": "#inline_comment"
12433						}
12434					]
12435				},
12436				"20": {
12437					"patterns": [
12438						{
12439							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12440							"captures": {
12441								"1": {
12442									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12443								},
12444								"2": {
12445									"name": "comment.block.cpp"
12446								},
12447								"3": {
12448									"patterns": [
12449										{
12450											"match": "\\*\\/",
12451											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12452										},
12453										{
12454											"match": "\\*",
12455											"name": "comment.block.cpp"
12456										}
12457									]
12458								}
12459							}
12460						}
12461					]
12462				}
12463			}
12464		},
12465		"parentheses": {
12466			"begin": "\\(",
12467			"end": "\\)",
12468			"beginCaptures": {
12469				"0": {
12470					"name": "punctuation.section.parens.begin.bracket.round.cpp"
12471				}
12472			},
12473			"endCaptures": {
12474				"0": {
12475					"name": "punctuation.section.parens.end.bracket.round.cpp"
12476				}
12477			},
12478			"name": "meta.parens.cpp",
12479			"patterns": [
12480				{
12481					"include": "#over_qualified_types"
12482				},
12483				{
12484					"match": "(?<!:):(?!:)",
12485					"name": "punctuation.separator.colon.range-based.cpp"
12486				},
12487				{
12488					"include": "#evaluation_context"
12489				}
12490			]
12491		},
12492		"pragma": {
12493			"begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?pragma\\b",
12494			"end": "(?<!\\\\)(?=\\n)",
12495			"beginCaptures": {
12496				"0": {
12497					"name": "keyword.control.directive.pragma.cpp"
12498				},
12499				"1": {
12500					"patterns": [
12501						{
12502							"include": "#inline_comment"
12503						}
12504					]
12505				},
12506				"2": {
12507					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12508				},
12509				"3": {
12510					"name": "comment.block.cpp"
12511				},
12512				"4": {
12513					"patterns": [
12514						{
12515							"match": "\\*\\/",
12516							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12517						},
12518						{
12519							"match": "\\*",
12520							"name": "comment.block.cpp"
12521						}
12522					]
12523				},
12524				"5": {
12525					"name": "punctuation.definition.directive.cpp"
12526				}
12527			},
12528			"endCaptures": {},
12529			"name": "meta.preprocessor.pragma.cpp",
12530			"patterns": [
12531				{
12532					"include": "#comments"
12533				},
12534				{
12535					"include": "#string_context"
12536				},
12537				{
12538					"match": "[a-zA-Z_$][\\w\\-$]*",
12539					"name": "entity.other.attribute-name.pragma.preprocessor.cpp"
12540				},
12541				{
12542					"include": "#preprocessor_number_literal"
12543				},
12544				{
12545					"include": "#line_continuation_character"
12546				}
12547			]
12548		},
12549		"pragma_mark": {
12550			"match": "(^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?pragma(?:\\s)+mark)(?:\\s)+(.*)",
12551			"captures": {
12552				"1": {
12553					"name": "keyword.control.directive.pragma.pragma-mark.cpp"
12554				},
12555				"2": {
12556					"patterns": [
12557						{
12558							"include": "#inline_comment"
12559						}
12560					]
12561				},
12562				"3": {
12563					"patterns": [
12564						{
12565							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12566							"captures": {
12567								"1": {
12568									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12569								},
12570								"2": {
12571									"name": "comment.block.cpp"
12572								},
12573								"3": {
12574									"patterns": [
12575										{
12576											"match": "\\*\\/",
12577											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12578										},
12579										{
12580											"match": "\\*",
12581											"name": "comment.block.cpp"
12582										}
12583									]
12584								}
12585							}
12586						}
12587					]
12588				},
12589				"4": {
12590					"name": "punctuation.definition.directive.cpp"
12591				},
12592				"5": {
12593					"name": "entity.name.tag.pragma-mark.cpp"
12594				}
12595			},
12596			"name": "meta.preprocessor.pragma.cpp"
12597		},
12598		"predefined_macros": {
12599			"patterns": [
12600				{
12601					"match": "\\b(__cplusplus|__DATE__|__FILE__|__LINE__|__STDC__|__STDC_HOSTED__|__STDC_NO_COMPLEX__|__STDC_VERSION__|__STDCPP_THREADS__|__TIME__|NDEBUG|__OBJC__|__ASSEMBLER__|__ATOM__|__AVX__|__AVX2__|_CHAR_UNSIGNED|__CLR_VER|_CONTROL_FLOW_GUARD|__COUNTER__|__cplusplus_cli|__cplusplus_winrt|_CPPRTTI|_CPPUNWIND|_DEBUG|_DLL|__FUNCDNAME__|__FUNCSIG__|__FUNCTION__|_INTEGRAL_MAX_BITS|__INTELLISENSE__|_ISO_VOLATILE|_KERNEL_MODE|_M_AMD64|_M_ARM|_M_ARM_ARMV7VE|_M_ARM_FP|_M_ARM64|_M_CEE|_M_CEE_PURE|_M_CEE_SAFE|_M_FP_EXCEPT|_M_FP_FAST|_M_FP_PRECISE|_M_FP_STRICT|_M_IX86|_M_IX86_FP|_M_X64|_MANAGED|_MSC_BUILD|_MSC_EXTENSIONS|_MSC_FULL_VER|_MSC_VER|_MSVC_LANG|__MSVC_RUNTIME_CHECKS|_MT|_NATIVE_WCHAR_T_DEFINED|_OPENMP|_PREFAST|__TIMESTAMP__|_VC_NO_DEFAULTLIB|_WCHAR_T_DEFINED|_WIN32|_WIN64|_WINRT_DLL|_ATL_VER|_MFC_VER|__GFORTRAN__|__GNUC__|__GNUC_MINOR__|__GNUC_PATCHLEVEL__|__GNUG__|__STRICT_ANSI__|__BASE_FILE__|__INCLUDE_LEVEL__|__ELF__|__VERSION__|__OPTIMIZE__|__OPTIMIZE_SIZE__|__NO_INLINE__|__GNUC_STDC_INLINE__|__CHAR_UNSIGNED__|__WCHAR_UNSIGNED__|__REGISTER_PREFIX__|__REGISTER_PREFIX__|__SIZE_TYPE__|__PTRDIFF_TYPE__|__WCHAR_TYPE__|__WINT_TYPE__|__INTMAX_TYPE__|__UINTMAX_TYPE__|__SIG_ATOMIC_TYPE__|__INT8_TYPE__|__INT16_TYPE__|__INT32_TYPE__|__INT64_TYPE__|__UINT8_TYPE__|__UINT16_TYPE__|__UINT32_TYPE__|__UINT64_TYPE__|__INT_LEAST8_TYPE__|__INT_LEAST16_TYPE__|__INT_LEAST32_TYPE__|__INT_LEAST64_TYPE__|__UINT_LEAST8_TYPE__|__UINT_LEAST16_TYPE__|__UINT_LEAST32_TYPE__|__UINT_LEAST64_TYPE__|__INT_FAST8_TYPE__|__INT_FAST16_TYPE__|__INT_FAST32_TYPE__|__INT_FAST64_TYPE__|__UINT_FAST8_TYPE__|__UINT_FAST16_TYPE__|__UINT_FAST32_TYPE__|__UINT_FAST64_TYPE__|__INTPTR_TYPE__|__UINTPTR_TYPE__|__CHAR_BIT__|__SCHAR_MAX__|__WCHAR_MAX__|__SHRT_MAX__|__INT_MAX__|__LONG_MAX__|__LONG_LONG_MAX__|__WINT_MAX__|__SIZE_MAX__|__PTRDIFF_MAX__|__INTMAX_MAX__|__UINTMAX_MAX__|__SIG_ATOMIC_MAX__|__INT8_MAX__|__INT16_MAX__|__INT32_MAX__|__INT64_MAX__|__UINT8_MAX__|__UINT16_MAX__|__UINT32_MAX__|__UINT64_MAX__|__INT_LEAST8_MAX__|__INT_LEAST16_MAX__|__INT_LEAST32_MAX__|__INT_LEAST64_MAX__|__UINT_LEAST8_MAX__|__UINT_LEAST16_MAX__|__UINT_LEAST32_MAX__|__UINT_LEAST64_MAX__|__INT_FAST8_MAX__|__INT_FAST16_MAX__|__INT_FAST32_MAX__|__INT_FAST64_MAX__|__UINT_FAST8_MAX__|__UINT_FAST16_MAX__|__UINT_FAST32_MAX__|__UINT_FAST64_MAX__|__INTPTR_MAX__|__UINTPTR_MAX__|__WCHAR_MIN__|__WINT_MIN__|__SIG_ATOMIC_MIN__|__SCHAR_WIDTH__|__SHRT_WIDTH__|__INT_WIDTH__|__LONG_WIDTH__|__LONG_LONG_WIDTH__|__PTRDIFF_WIDTH__|__SIG_ATOMIC_WIDTH__|__SIZE_WIDTH__|__WCHAR_WIDTH__|__WINT_WIDTH__|__INT_LEAST8_WIDTH__|__INT_LEAST16_WIDTH__|__INT_LEAST32_WIDTH__|__INT_LEAST64_WIDTH__|__INT_FAST8_WIDTH__|__INT_FAST16_WIDTH__|__INT_FAST32_WIDTH__|__INT_FAST64_WIDTH__|__INTPTR_WIDTH__|__INTMAX_WIDTH__|__SIZEOF_INT__|__SIZEOF_LONG__|__SIZEOF_LONG_LONG__|__SIZEOF_SHORT__|__SIZEOF_POINTER__|__SIZEOF_FLOAT__|__SIZEOF_DOUBLE__|__SIZEOF_LONG_DOUBLE__|__SIZEOF_SIZE_T__|__SIZEOF_WCHAR_T__|__SIZEOF_WINT_T__|__SIZEOF_PTRDIFF_T__|__BYTE_ORDER__|__ORDER_LITTLE_ENDIAN__|__ORDER_BIG_ENDIAN__|__ORDER_PDP_ENDIAN__|__FLOAT_WORD_ORDER__|__DEPRECATED|__EXCEPTIONS|__GXX_RTTI|__USING_SJLJ_EXCEPTIONS__|__GXX_EXPERIMENTAL_CXX0X__|__GXX_WEAK__|__NEXT_RUNTIME__|__LP64__|_LP64|__SSP__|__SSP_ALL__|__SSP_STRONG__|__SSP_EXPLICIT__|__SANITIZE_ADDRESS__|__SANITIZE_THREAD__|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8|__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16|__HAVE_SPECULATION_SAFE_VALUE|__GCC_HAVE_DWARF2_CFI_ASM|__FP_FAST_FMA|__FP_FAST_FMAF|__FP_FAST_FMAL|__FP_FAST_FMAF16|__FP_FAST_FMAF32|__FP_FAST_FMAF64|__FP_FAST_FMAF128|__FP_FAST_FMAF32X|__FP_FAST_FMAF64X|__FP_FAST_FMAF128X|__GCC_IEC_559|__GCC_IEC_559_COMPLEX|__NO_MATH_ERRNO__|__has_builtin|__has_feature|__has_extension|__has_cpp_attribute|__has_c_attribute|__has_attribute|__has_declspec_attribute|__is_identifier|__has_include|__has_include_next|__has_warning|__BASE_FILE__|__FILE_NAME__|__clang__|__clang_major__|__clang_minor__|__clang_patchlevel__|__clang_version__|__fp16|_Float16)\\b",
12602					"captures": {
12603						"1": {
12604							"name": "entity.name.other.preprocessor.macro.predefined.$1.cpp"
12605						}
12606					}
12607				},
12608				{
12609					"match": "\\b__([A-Z_]+)__\\b",
12610					"name": "entity.name.other.preprocessor.macro.predefined.probably.$1.cpp"
12611				}
12612			]
12613		},
12614		"preprocessor_conditional_context": {
12615			"patterns": [
12616				{
12617					"include": "#preprocessor_conditional_defined"
12618				},
12619				{
12620					"include": "#comments"
12621				},
12622				{
12623					"include": "#language_constants"
12624				},
12625				{
12626					"include": "#string_context"
12627				},
12628				{
12629					"include": "#d9bc4796b0b_preprocessor_number_literal"
12630				},
12631				{
12632					"include": "#operators"
12633				},
12634				{
12635					"include": "#predefined_macros"
12636				},
12637				{
12638					"include": "#macro_name"
12639				},
12640				{
12641					"include": "#line_continuation_character"
12642				}
12643			]
12644		},
12645		"preprocessor_conditional_defined": {
12646			"begin": "((?<!\\w)defined(?!\\w))(\\()",
12647			"end": "(?:\\)|(?<!\\\\)(?=\\n))",
12648			"beginCaptures": {
12649				"1": {
12650					"name": "keyword.control.directive.conditional.defined.cpp"
12651				},
12652				"2": {
12653					"name": "punctuation.section.parens.control.defined.cpp"
12654				}
12655			},
12656			"endCaptures": {
12657				"0": {
12658					"name": "punctuation.section.parens.control.defined.cpp"
12659				}
12660			},
12661			"patterns": [
12662				{
12663					"include": "#macro_name"
12664				}
12665			]
12666		},
12667		"preprocessor_conditional_parentheses": {
12668			"begin": "\\(",
12669			"end": "\\)",
12670			"beginCaptures": {
12671				"0": {
12672					"name": "punctuation.section.parens.begin.bracket.round.cpp"
12673				}
12674			},
12675			"endCaptures": {
12676				"0": {
12677					"name": "punctuation.section.parens.end.bracket.round.cpp"
12678				}
12679			},
12680			"name": "meta.parens.preprocessor.conditional.cpp"
12681		},
12682		"preprocessor_conditional_range": {
12683			"begin": "^((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?:(?:ifndef|ifdef)|if))",
12684			"end": "^(?!\\s*+#\\s*(?:else|endif))",
12685			"beginCaptures": {
12686				"0": {
12687					"name": "keyword.control.directive.conditional.$6.cpp"
12688				},
12689				"1": {
12690					"patterns": [
12691						{
12692							"include": "#inline_comment"
12693						}
12694					]
12695				},
12696				"2": {
12697					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12698				},
12699				"3": {
12700					"name": "comment.block.cpp"
12701				},
12702				"4": {
12703					"patterns": [
12704						{
12705							"match": "\\*\\/",
12706							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12707						},
12708						{
12709							"match": "\\*",
12710							"name": "comment.block.cpp"
12711						}
12712					]
12713				},
12714				"5": {
12715					"name": "punctuation.definition.directive.cpp"
12716				},
12717				"6": {}
12718			},
12719			"endCaptures": {},
12720			"patterns": [
12721				{
12722					"begin": "\\G(?<=ifndef|ifdef|if)",
12723					"end": "(?<!\\\\)(?=\\n)",
12724					"beginCaptures": {},
12725					"endCaptures": {},
12726					"name": "meta.preprocessor.conditional.cpp",
12727					"patterns": [
12728						{
12729							"include": "#preprocessor_conditional_context"
12730						}
12731					]
12732				},
12733				{
12734					"include": "$self"
12735				}
12736			]
12737		},
12738		"preprocessor_conditional_standalone": {
12739			"match": "^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?((?<!\\w)(?:endif|else|elif)(?!\\w))",
12740			"captures": {
12741				"1": {
12742					"patterns": [
12743						{
12744							"include": "#inline_comment"
12745						}
12746					]
12747				},
12748				"2": {
12749					"patterns": [
12750						{
12751							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12752							"captures": {
12753								"1": {
12754									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12755								},
12756								"2": {
12757									"name": "comment.block.cpp"
12758								},
12759								"3": {
12760									"patterns": [
12761										{
12762											"match": "\\*\\/",
12763											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12764										},
12765										{
12766											"match": "\\*",
12767											"name": "comment.block.cpp"
12768										}
12769									]
12770								}
12771							}
12772						}
12773					]
12774				},
12775				"3": {
12776					"name": "punctuation.definition.directive.cpp"
12777				}
12778			},
12779			"name": "keyword.control.directive.$4.cpp"
12780		},
12781		"preprocessor_context": {
12782			"patterns": [
12783				{
12784					"include": "#pragma_mark"
12785				},
12786				{
12787					"include": "#pragma"
12788				},
12789				{
12790					"include": "#include"
12791				},
12792				{
12793					"include": "#line"
12794				},
12795				{
12796					"include": "#diagnostic"
12797				},
12798				{
12799					"include": "#undef"
12800				},
12801				{
12802					"include": "#preprocessor_conditional_range"
12803				},
12804				{
12805					"include": "#single_line_macro"
12806				},
12807				{
12808					"include": "#macro"
12809				},
12810				{
12811					"include": "#preprocessor_conditional_standalone"
12812				},
12813				{
12814					"include": "#macro_argument"
12815				}
12816			]
12817		},
12818		"qualified_type": {
12819			"match": "\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<11>?)+>)?(?![\\w<:.])",
12820			"captures": {
12821				"0": {
12822					"patterns": [
12823						{
12824							"match": "::",
12825							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
12826						},
12827						{
12828							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
12829							"name": "storage.type.$0.cpp"
12830						},
12831						{
12832							"include": "#attributes_context"
12833						},
12834						{
12835							"include": "#storage_types"
12836						},
12837						{
12838							"include": "#number_literal"
12839						},
12840						{
12841							"include": "#string_context"
12842						},
12843						{
12844							"include": "#comma"
12845						},
12846						{
12847							"include": "#scope_resolution_inner_generated"
12848						},
12849						{
12850							"begin": "<",
12851							"end": ">",
12852							"beginCaptures": {
12853								"0": {
12854									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
12855								}
12856							},
12857							"endCaptures": {
12858								"0": {
12859									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
12860								}
12861							},
12862							"name": "meta.template.call.cpp",
12863							"patterns": [
12864								{
12865									"include": "#template_call_context"
12866								}
12867							]
12868						},
12869						{
12870							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
12871							"name": "entity.name.type.cpp"
12872						}
12873					]
12874				},
12875				"1": {
12876					"patterns": [
12877						{
12878							"include": "#attributes_context"
12879						},
12880						{
12881							"include": "#number_literal"
12882						}
12883					]
12884				},
12885				"2": {
12886					"patterns": [
12887						{
12888							"include": "#inline_comment"
12889						}
12890					]
12891				},
12892				"3": {
12893					"patterns": [
12894						{
12895							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12896							"captures": {
12897								"1": {
12898									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12899								},
12900								"2": {
12901									"name": "comment.block.cpp"
12902								},
12903								"3": {
12904									"patterns": [
12905										{
12906											"match": "\\*\\/",
12907											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12908										},
12909										{
12910											"match": "\\*",
12911											"name": "comment.block.cpp"
12912										}
12913									]
12914								}
12915							}
12916						}
12917					]
12918				},
12919				"4": {
12920					"patterns": [
12921						{
12922							"include": "#inline_comment"
12923						}
12924					]
12925				},
12926				"5": {
12927					"patterns": [
12928						{
12929							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12930							"captures": {
12931								"1": {
12932									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12933								},
12934								"2": {
12935									"name": "comment.block.cpp"
12936								},
12937								"3": {
12938									"patterns": [
12939										{
12940											"match": "\\*\\/",
12941											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12942										},
12943										{
12944											"match": "\\*",
12945											"name": "comment.block.cpp"
12946										}
12947									]
12948								}
12949							}
12950						}
12951					]
12952				},
12953				"6": {
12954					"patterns": [
12955						{
12956							"match": "::",
12957							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
12958						},
12959						{
12960							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
12961							"name": "entity.name.scope-resolution.type.cpp"
12962						},
12963						{
12964							"include": "#template_call_range"
12965						}
12966					]
12967				},
12968				"7": {
12969					"patterns": [
12970						{
12971							"include": "#template_call_range"
12972						}
12973					]
12974				},
12975				"9": {
12976					"patterns": [
12977						{
12978							"include": "#inline_comment"
12979						}
12980					]
12981				},
12982				"10": {
12983					"patterns": [
12984						{
12985							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
12986							"captures": {
12987								"1": {
12988									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
12989								},
12990								"2": {
12991									"name": "comment.block.cpp"
12992								},
12993								"3": {
12994									"patterns": [
12995										{
12996											"match": "\\*\\/",
12997											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
12998										},
12999										{
13000											"match": "\\*",
13001											"name": "comment.block.cpp"
13002										}
13003									]
13004								}
13005							}
13006						}
13007					]
13008				}
13009			},
13010			"name": "meta.qualified_type.cpp"
13011		},
13012		"qualifiers_and_specifiers_post_parameters": {
13013			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?:((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?<!\\w)(?:(?:override)|(?:volatile)|(?:noexcept)|(?:final)|(?:const))(?!\\w))+(?=\\s*(?:(?:\\{|;)|[\\n\\r])))",
13014			"captures": {
13015				"1": {
13016					"patterns": [
13017						{
13018							"include": "#inline_comment"
13019						}
13020					]
13021				},
13022				"2": {
13023					"patterns": [
13024						{
13025							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
13026							"captures": {
13027								"1": {
13028									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
13029								},
13030								"2": {
13031									"name": "comment.block.cpp"
13032								},
13033								"3": {
13034									"patterns": [
13035										{
13036											"match": "\\*\\/",
13037											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
13038										},
13039										{
13040											"match": "\\*",
13041											"name": "comment.block.cpp"
13042										}
13043									]
13044								}
13045							}
13046						}
13047					]
13048				},
13049				"3": {
13050					"name": "storage.modifier.specifier.functional.post-parameters.$3.cpp"
13051				},
13052				"4": {
13053					"patterns": [
13054						{
13055							"include": "#inline_comment"
13056						}
13057					]
13058				},
13059				"5": {
13060					"patterns": [
13061						{
13062							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
13063							"captures": {
13064								"1": {
13065									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
13066								},
13067								"2": {
13068									"name": "comment.block.cpp"
13069								},
13070								"3": {
13071									"patterns": [
13072										{
13073											"match": "\\*\\/",
13074											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
13075										},
13076										{
13077											"match": "\\*",
13078											"name": "comment.block.cpp"
13079										}
13080									]
13081								}
13082							}
13083						}
13084					]
13085				}
13086			}
13087		},
13088		"scope_resolution": {
13089			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13090			"captures": {
13091				"0": {
13092					"patterns": [
13093						{
13094							"include": "#scope_resolution_inner_generated"
13095						}
13096					]
13097				},
13098				"1": {
13099					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
13100				},
13101				"2": {
13102					"patterns": [
13103						{
13104							"include": "#template_call_range"
13105						}
13106					]
13107				}
13108			}
13109		},
13110		"scope_resolution_function_call": {
13111			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13112			"captures": {
13113				"0": {
13114					"patterns": [
13115						{
13116							"include": "#scope_resolution_function_call_inner_generated"
13117						}
13118					]
13119				},
13120				"1": {
13121					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
13122				},
13123				"2": {
13124					"patterns": [
13125						{
13126							"include": "#template_call_range"
13127						}
13128					]
13129				}
13130			}
13131		},
13132		"scope_resolution_function_call_inner_generated": {
13133			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13134			"captures": {
13135				"1": {
13136					"patterns": [
13137						{
13138							"include": "#scope_resolution_function_call_inner_generated"
13139						}
13140					]
13141				},
13142				"2": {
13143					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
13144				},
13145				"3": {
13146					"patterns": [
13147						{
13148							"include": "#template_call_range"
13149						}
13150					]
13151				},
13152				"4": {},
13153				"5": {
13154					"name": "entity.name.scope-resolution.function.call.cpp"
13155				},
13156				"6": {
13157					"name": "meta.template.call.cpp",
13158					"patterns": [
13159						{
13160							"include": "#template_call_range"
13161						}
13162					]
13163				},
13164				"7": {},
13165				"8": {
13166					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
13167				}
13168			}
13169		},
13170		"scope_resolution_function_definition": {
13171			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13172			"captures": {
13173				"0": {
13174					"patterns": [
13175						{
13176							"include": "#scope_resolution_function_definition_inner_generated"
13177						}
13178					]
13179				},
13180				"1": {
13181					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
13182				},
13183				"2": {
13184					"patterns": [
13185						{
13186							"include": "#template_call_range"
13187						}
13188					]
13189				}
13190			}
13191		},
13192		"scope_resolution_function_definition_inner_generated": {
13193			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13194			"captures": {
13195				"1": {
13196					"patterns": [
13197						{
13198							"include": "#scope_resolution_function_definition_inner_generated"
13199						}
13200					]
13201				},
13202				"2": {
13203					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
13204				},
13205				"3": {
13206					"patterns": [
13207						{
13208							"include": "#template_call_range"
13209						}
13210					]
13211				},
13212				"4": {},
13213				"5": {
13214					"name": "entity.name.scope-resolution.function.definition.cpp"
13215				},
13216				"6": {
13217					"name": "meta.template.call.cpp",
13218					"patterns": [
13219						{
13220							"include": "#template_call_range"
13221						}
13222					]
13223				},
13224				"7": {},
13225				"8": {
13226					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
13227				}
13228			}
13229		},
13230		"scope_resolution_function_definition_operator_overload": {
13231			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13232			"captures": {
13233				"0": {
13234					"patterns": [
13235						{
13236							"include": "#scope_resolution_function_definition_operator_overload_inner_generated"
13237						}
13238					]
13239				},
13240				"1": {
13241					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
13242				},
13243				"2": {
13244					"patterns": [
13245						{
13246							"include": "#template_call_range"
13247						}
13248					]
13249				}
13250			}
13251		},
13252		"scope_resolution_function_definition_operator_overload_inner_generated": {
13253			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13254			"captures": {
13255				"1": {
13256					"patterns": [
13257						{
13258							"include": "#scope_resolution_function_definition_operator_overload_inner_generated"
13259						}
13260					]
13261				},
13262				"2": {
13263					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
13264				},
13265				"3": {
13266					"patterns": [
13267						{
13268							"include": "#template_call_range"
13269						}
13270					]
13271				},
13272				"4": {},
13273				"5": {
13274					"name": "entity.name.scope-resolution.function.definition.operator-overload.cpp"
13275				},
13276				"6": {
13277					"name": "meta.template.call.cpp",
13278					"patterns": [
13279						{
13280							"include": "#template_call_range"
13281						}
13282					]
13283				},
13284				"7": {},
13285				"8": {
13286					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
13287				}
13288			}
13289		},
13290		"scope_resolution_inner_generated": {
13291			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13292			"captures": {
13293				"1": {
13294					"patterns": [
13295						{
13296							"include": "#scope_resolution_inner_generated"
13297						}
13298					]
13299				},
13300				"2": {
13301					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
13302				},
13303				"3": {
13304					"patterns": [
13305						{
13306							"include": "#template_call_range"
13307						}
13308					]
13309				},
13310				"4": {},
13311				"5": {
13312					"name": "entity.name.scope-resolution.cpp"
13313				},
13314				"6": {
13315					"name": "meta.template.call.cpp",
13316					"patterns": [
13317						{
13318							"include": "#template_call_range"
13319						}
13320					]
13321				},
13322				"7": {},
13323				"8": {
13324					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
13325				}
13326			}
13327		},
13328		"scope_resolution_namespace_alias": {
13329			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13330			"captures": {
13331				"0": {
13332					"patterns": [
13333						{
13334							"include": "#scope_resolution_namespace_alias_inner_generated"
13335						}
13336					]
13337				},
13338				"1": {
13339					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
13340				},
13341				"2": {
13342					"patterns": [
13343						{
13344							"include": "#template_call_range"
13345						}
13346					]
13347				}
13348			}
13349		},
13350		"scope_resolution_namespace_alias_inner_generated": {
13351			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13352			"captures": {
13353				"1": {
13354					"patterns": [
13355						{
13356							"include": "#scope_resolution_namespace_alias_inner_generated"
13357						}
13358					]
13359				},
13360				"2": {
13361					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
13362				},
13363				"3": {
13364					"patterns": [
13365						{
13366							"include": "#template_call_range"
13367						}
13368					]
13369				},
13370				"4": {},
13371				"5": {
13372					"name": "entity.name.scope-resolution.namespace.alias.cpp"
13373				},
13374				"6": {
13375					"name": "meta.template.call.cpp",
13376					"patterns": [
13377						{
13378							"include": "#template_call_range"
13379						}
13380					]
13381				},
13382				"7": {},
13383				"8": {
13384					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
13385				}
13386			}
13387		},
13388		"scope_resolution_namespace_block": {
13389			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13390			"captures": {
13391				"0": {
13392					"patterns": [
13393						{
13394							"include": "#scope_resolution_namespace_block_inner_generated"
13395						}
13396					]
13397				},
13398				"1": {
13399					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
13400				},
13401				"2": {
13402					"patterns": [
13403						{
13404							"include": "#template_call_range"
13405						}
13406					]
13407				}
13408			}
13409		},
13410		"scope_resolution_namespace_block_inner_generated": {
13411			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13412			"captures": {
13413				"1": {
13414					"patterns": [
13415						{
13416							"include": "#scope_resolution_namespace_block_inner_generated"
13417						}
13418					]
13419				},
13420				"2": {
13421					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
13422				},
13423				"3": {
13424					"patterns": [
13425						{
13426							"include": "#template_call_range"
13427						}
13428					]
13429				},
13430				"4": {},
13431				"5": {
13432					"name": "entity.name.scope-resolution.namespace.block.cpp"
13433				},
13434				"6": {
13435					"name": "meta.template.call.cpp",
13436					"patterns": [
13437						{
13438							"include": "#template_call_range"
13439						}
13440					]
13441				},
13442				"7": {},
13443				"8": {
13444					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
13445				}
13446			}
13447		},
13448		"scope_resolution_namespace_using": {
13449			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13450			"captures": {
13451				"0": {
13452					"patterns": [
13453						{
13454							"include": "#scope_resolution_namespace_using_inner_generated"
13455						}
13456					]
13457				},
13458				"1": {
13459					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
13460				},
13461				"2": {
13462					"patterns": [
13463						{
13464							"include": "#template_call_range"
13465						}
13466					]
13467				}
13468			}
13469		},
13470		"scope_resolution_namespace_using_inner_generated": {
13471			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13472			"captures": {
13473				"1": {
13474					"patterns": [
13475						{
13476							"include": "#scope_resolution_namespace_using_inner_generated"
13477						}
13478					]
13479				},
13480				"2": {
13481					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
13482				},
13483				"3": {
13484					"patterns": [
13485						{
13486							"include": "#template_call_range"
13487						}
13488					]
13489				},
13490				"4": {},
13491				"5": {
13492					"name": "entity.name.scope-resolution.namespace.using.cpp"
13493				},
13494				"6": {
13495					"name": "meta.template.call.cpp",
13496					"patterns": [
13497						{
13498							"include": "#template_call_range"
13499						}
13500					]
13501				},
13502				"7": {},
13503				"8": {
13504					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
13505				}
13506			}
13507		},
13508		"scope_resolution_parameter": {
13509			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13510			"captures": {
13511				"0": {
13512					"patterns": [
13513						{
13514							"include": "#scope_resolution_parameter_inner_generated"
13515						}
13516					]
13517				},
13518				"1": {
13519					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
13520				},
13521				"2": {
13522					"patterns": [
13523						{
13524							"include": "#template_call_range"
13525						}
13526					]
13527				}
13528			}
13529		},
13530		"scope_resolution_parameter_inner_generated": {
13531			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13532			"captures": {
13533				"1": {
13534					"patterns": [
13535						{
13536							"include": "#scope_resolution_parameter_inner_generated"
13537						}
13538					]
13539				},
13540				"2": {
13541					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
13542				},
13543				"3": {
13544					"patterns": [
13545						{
13546							"include": "#template_call_range"
13547						}
13548					]
13549				},
13550				"4": {},
13551				"5": {
13552					"name": "entity.name.scope-resolution.parameter.cpp"
13553				},
13554				"6": {
13555					"name": "meta.template.call.cpp",
13556					"patterns": [
13557						{
13558							"include": "#template_call_range"
13559						}
13560					]
13561				},
13562				"7": {},
13563				"8": {
13564					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
13565				}
13566			}
13567		},
13568		"scope_resolution_template_call": {
13569			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13570			"captures": {
13571				"0": {
13572					"patterns": [
13573						{
13574							"include": "#scope_resolution_template_call_inner_generated"
13575						}
13576					]
13577				},
13578				"1": {
13579					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
13580				},
13581				"2": {
13582					"patterns": [
13583						{
13584							"include": "#template_call_range"
13585						}
13586					]
13587				}
13588			}
13589		},
13590		"scope_resolution_template_call_inner_generated": {
13591			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13592			"captures": {
13593				"1": {
13594					"patterns": [
13595						{
13596							"include": "#scope_resolution_template_call_inner_generated"
13597						}
13598					]
13599				},
13600				"2": {
13601					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
13602				},
13603				"3": {
13604					"patterns": [
13605						{
13606							"include": "#template_call_range"
13607						}
13608					]
13609				},
13610				"4": {},
13611				"5": {
13612					"name": "entity.name.scope-resolution.template.call.cpp"
13613				},
13614				"6": {
13615					"name": "meta.template.call.cpp",
13616					"patterns": [
13617						{
13618							"include": "#template_call_range"
13619						}
13620					]
13621				},
13622				"7": {},
13623				"8": {
13624					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
13625				}
13626			}
13627		},
13628		"scope_resolution_template_definition": {
13629			"match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<3>?)+>)(?:\\s)*+)?::)*\\s*+",
13630			"captures": {
13631				"0": {
13632					"patterns": [
13633						{
13634							"include": "#scope_resolution_template_definition_inner_generated"
13635						}
13636					]
13637				},
13638				"1": {
13639					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
13640				},
13641				"2": {
13642					"patterns": [
13643						{
13644							"include": "#template_call_range"
13645						}
13646					]
13647				}
13648			}
13649		},
13650		"scope_resolution_template_definition_inner_generated": {
13651			"match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?::)*\\s*+)((?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<7>?)+>)(?:\\s)*+)?(::)",
13652			"captures": {
13653				"1": {
13654					"patterns": [
13655						{
13656							"include": "#scope_resolution_template_definition_inner_generated"
13657						}
13658					]
13659				},
13660				"2": {
13661					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
13662				},
13663				"3": {
13664					"patterns": [
13665						{
13666							"include": "#template_call_range"
13667						}
13668					]
13669				},
13670				"4": {},
13671				"5": {
13672					"name": "entity.name.scope-resolution.template.definition.cpp"
13673				},
13674				"6": {
13675					"name": "meta.template.call.cpp",
13676					"patterns": [
13677						{
13678							"include": "#template_call_range"
13679						}
13680					]
13681				},
13682				"7": {},
13683				"8": {
13684					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
13685				}
13686			}
13687		},
13688		"semicolon": {
13689			"match": ";",
13690			"name": "punctuation.terminator.statement.cpp"
13691		},
13692		"simple_type": {
13693			"match": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<12>?)+>)?(?![\\w<:.]))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?",
13694			"captures": {
13695				"1": {
13696					"name": "meta.qualified_type.cpp",
13697					"patterns": [
13698						{
13699							"match": "::",
13700							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
13701						},
13702						{
13703							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
13704							"name": "storage.type.$0.cpp"
13705						},
13706						{
13707							"include": "#attributes_context"
13708						},
13709						{
13710							"include": "#storage_types"
13711						},
13712						{
13713							"include": "#number_literal"
13714						},
13715						{
13716							"include": "#string_context"
13717						},
13718						{
13719							"include": "#comma"
13720						},
13721						{
13722							"include": "#scope_resolution_inner_generated"
13723						},
13724						{
13725							"begin": "<",
13726							"end": ">",
13727							"beginCaptures": {
13728								"0": {
13729									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
13730								}
13731							},
13732							"endCaptures": {
13733								"0": {
13734									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
13735								}
13736							},
13737							"name": "meta.template.call.cpp",
13738							"patterns": [
13739								{
13740									"include": "#template_call_context"
13741								}
13742							]
13743						},
13744						{
13745							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
13746							"name": "entity.name.type.cpp"
13747						}
13748					]
13749				},
13750				"2": {
13751					"patterns": [
13752						{
13753							"include": "#attributes_context"
13754						},
13755						{
13756							"include": "#number_literal"
13757						}
13758					]
13759				},
13760				"3": {
13761					"patterns": [
13762						{
13763							"include": "#inline_comment"
13764						}
13765					]
13766				},
13767				"4": {
13768					"patterns": [
13769						{
13770							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
13771							"captures": {
13772								"1": {
13773									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
13774								},
13775								"2": {
13776									"name": "comment.block.cpp"
13777								},
13778								"3": {
13779									"patterns": [
13780										{
13781											"match": "\\*\\/",
13782											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
13783										},
13784										{
13785											"match": "\\*",
13786											"name": "comment.block.cpp"
13787										}
13788									]
13789								}
13790							}
13791						}
13792					]
13793				},
13794				"5": {
13795					"patterns": [
13796						{
13797							"include": "#inline_comment"
13798						}
13799					]
13800				},
13801				"6": {
13802					"patterns": [
13803						{
13804							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
13805							"captures": {
13806								"1": {
13807									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
13808								},
13809								"2": {
13810									"name": "comment.block.cpp"
13811								},
13812								"3": {
13813									"patterns": [
13814										{
13815											"match": "\\*\\/",
13816											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
13817										},
13818										{
13819											"match": "\\*",
13820											"name": "comment.block.cpp"
13821										}
13822									]
13823								}
13824							}
13825						}
13826					]
13827				},
13828				"7": {
13829					"patterns": [
13830						{
13831							"match": "::",
13832							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
13833						},
13834						{
13835							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
13836							"name": "entity.name.scope-resolution.type.cpp"
13837						},
13838						{
13839							"include": "#template_call_range"
13840						}
13841					]
13842				},
13843				"8": {
13844					"patterns": [
13845						{
13846							"include": "#template_call_range"
13847						}
13848					]
13849				},
13850				"9": {},
13851				"10": {
13852					"patterns": [
13853						{
13854							"include": "#inline_comment"
13855						}
13856					]
13857				},
13858				"11": {
13859					"patterns": [
13860						{
13861							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
13862							"captures": {
13863								"1": {
13864									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
13865								},
13866								"2": {
13867									"name": "comment.block.cpp"
13868								},
13869								"3": {
13870									"patterns": [
13871										{
13872											"match": "\\*\\/",
13873											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
13874										},
13875										{
13876											"match": "\\*",
13877											"name": "comment.block.cpp"
13878										}
13879									]
13880								}
13881							}
13882						}
13883					]
13884				},
13885				"12": {},
13886				"13": {
13887					"patterns": [
13888						{
13889							"match": "\\*",
13890							"name": "storage.modifier.pointer.cpp"
13891						},
13892						{
13893							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
13894							"captures": {
13895								"1": {
13896									"patterns": [
13897										{
13898											"include": "#inline_comment"
13899										}
13900									]
13901								},
13902								"2": {
13903									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
13904								},
13905								"3": {
13906									"name": "comment.block.cpp"
13907								},
13908								"4": {
13909									"patterns": [
13910										{
13911											"match": "\\*\\/",
13912											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
13913										},
13914										{
13915											"match": "\\*",
13916											"name": "comment.block.cpp"
13917										}
13918									]
13919								}
13920							},
13921							"name": "invalid.illegal.reference-type.cpp"
13922						},
13923						{
13924							"match": "\\&",
13925							"name": "storage.modifier.reference.cpp"
13926						}
13927					]
13928				},
13929				"14": {
13930					"patterns": [
13931						{
13932							"include": "#inline_comment"
13933						}
13934					]
13935				},
13936				"15": {
13937					"patterns": [
13938						{
13939							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
13940							"captures": {
13941								"1": {
13942									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
13943								},
13944								"2": {
13945									"name": "comment.block.cpp"
13946								},
13947								"3": {
13948									"patterns": [
13949										{
13950											"match": "\\*\\/",
13951											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
13952										},
13953										{
13954											"match": "\\*",
13955											"name": "comment.block.cpp"
13956										}
13957									]
13958								}
13959							}
13960						}
13961					]
13962				},
13963				"16": {
13964					"patterns": [
13965						{
13966							"include": "#inline_comment"
13967						}
13968					]
13969				},
13970				"17": {
13971					"patterns": [
13972						{
13973							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
13974							"captures": {
13975								"1": {
13976									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
13977								},
13978								"2": {
13979									"name": "comment.block.cpp"
13980								},
13981								"3": {
13982									"patterns": [
13983										{
13984											"match": "\\*\\/",
13985											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
13986										},
13987										{
13988											"match": "\\*",
13989											"name": "comment.block.cpp"
13990										}
13991									]
13992								}
13993							}
13994						}
13995					]
13996				}
13997			}
13998		},
13999		"single_line_macro": {
14000			"match": "^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))#define.*(?<![\\\\])(?:(?:\\n)|$)",
14001			"captures": {
14002				"0": {
14003					"patterns": [
14004						{
14005							"include": "#macro"
14006						},
14007						{
14008							"include": "#comments"
14009						}
14010					]
14011				},
14012				"1": {
14013					"patterns": [
14014						{
14015							"include": "#inline_comment"
14016						}
14017					]
14018				},
14019				"2": {
14020					"patterns": [
14021						{
14022							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14023							"captures": {
14024								"1": {
14025									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14026								},
14027								"2": {
14028									"name": "comment.block.cpp"
14029								},
14030								"3": {
14031									"patterns": [
14032										{
14033											"match": "\\*\\/",
14034											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14035										},
14036										{
14037											"match": "\\*",
14038											"name": "comment.block.cpp"
14039										}
14040									]
14041								}
14042							}
14043						}
14044					]
14045				}
14046			}
14047		},
14048		"sizeof_operator": {
14049			"begin": "((?<!\\w)sizeof(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
14050			"end": "\\)",
14051			"beginCaptures": {
14052				"1": {
14053					"name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp"
14054				},
14055				"2": {
14056					"patterns": [
14057						{
14058							"include": "#inline_comment"
14059						}
14060					]
14061				},
14062				"3": {
14063					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14064				},
14065				"4": {
14066					"name": "comment.block.cpp"
14067				},
14068				"5": {
14069					"patterns": [
14070						{
14071							"match": "\\*\\/",
14072							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14073						},
14074						{
14075							"match": "\\*",
14076							"name": "comment.block.cpp"
14077						}
14078					]
14079				},
14080				"6": {
14081					"name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp"
14082				}
14083			},
14084			"endCaptures": {
14085				"0": {
14086					"name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp"
14087				}
14088			},
14089			"contentName": "meta.arguments.operator.sizeof",
14090			"patterns": [
14091				{
14092					"include": "#evaluation_context"
14093				}
14094			]
14095		},
14096		"sizeof_variadic_operator": {
14097			"begin": "(\\bsizeof\\.\\.\\.)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
14098			"end": "\\)",
14099			"beginCaptures": {
14100				"1": {
14101					"name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp"
14102				},
14103				"2": {
14104					"patterns": [
14105						{
14106							"include": "#inline_comment"
14107						}
14108					]
14109				},
14110				"3": {
14111					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14112				},
14113				"4": {
14114					"name": "comment.block.cpp"
14115				},
14116				"5": {
14117					"patterns": [
14118						{
14119							"match": "\\*\\/",
14120							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14121						},
14122						{
14123							"match": "\\*",
14124							"name": "comment.block.cpp"
14125						}
14126					]
14127				},
14128				"6": {
14129					"name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp"
14130				}
14131			},
14132			"endCaptures": {
14133				"0": {
14134					"name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp"
14135				}
14136			},
14137			"contentName": "meta.arguments.operator.sizeof.variadic",
14138			"patterns": [
14139				{
14140					"include": "#evaluation_context"
14141				}
14142			]
14143		},
14144		"square_brackets": {
14145			"name": "meta.bracket.square.access",
14146			"begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",
14147			"beginCaptures": {
14148				"1": {
14149					"name": "variable.other.object"
14150				},
14151				"2": {
14152					"name": "punctuation.definition.begin.bracket.square"
14153				}
14154			},
14155			"end": "\\]",
14156			"endCaptures": {
14157				"0": {
14158					"name": "punctuation.definition.end.bracket.square"
14159				}
14160			},
14161			"patterns": [
14162				{
14163					"include": "#evaluation_context"
14164				}
14165			]
14166		},
14167		"standard_declares": {
14168			"patterns": [
14169				{
14170					"match": "((?<!\\w)struct(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
14171					"captures": {
14172						"1": {
14173							"name": "storage.type.struct.declare.cpp"
14174						},
14175						"2": {
14176							"patterns": [
14177								{
14178									"include": "#inline_comment"
14179								}
14180							]
14181						},
14182						"3": {
14183							"patterns": [
14184								{
14185									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14186									"captures": {
14187										"1": {
14188											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14189										},
14190										"2": {
14191											"name": "comment.block.cpp"
14192										},
14193										"3": {
14194											"patterns": [
14195												{
14196													"match": "\\*\\/",
14197													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14198												},
14199												{
14200													"match": "\\*",
14201													"name": "comment.block.cpp"
14202												}
14203											]
14204										}
14205									}
14206								}
14207							]
14208						},
14209						"4": {
14210							"name": "entity.name.type.struct.cpp"
14211						},
14212						"5": {
14213							"patterns": [
14214								{
14215									"match": "\\*",
14216									"name": "storage.modifier.pointer.cpp"
14217								},
14218								{
14219									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
14220									"captures": {
14221										"1": {
14222											"patterns": [
14223												{
14224													"include": "#inline_comment"
14225												}
14226											]
14227										},
14228										"2": {
14229											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14230										},
14231										"3": {
14232											"name": "comment.block.cpp"
14233										},
14234										"4": {
14235											"patterns": [
14236												{
14237													"match": "\\*\\/",
14238													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14239												},
14240												{
14241													"match": "\\*",
14242													"name": "comment.block.cpp"
14243												}
14244											]
14245										}
14246									},
14247									"name": "invalid.illegal.reference-type.cpp"
14248								},
14249								{
14250									"match": "\\&",
14251									"name": "storage.modifier.reference.cpp"
14252								}
14253							]
14254						},
14255						"6": {
14256							"patterns": [
14257								{
14258									"include": "#inline_comment"
14259								}
14260							]
14261						},
14262						"7": {
14263							"patterns": [
14264								{
14265									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14266									"captures": {
14267										"1": {
14268											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14269										},
14270										"2": {
14271											"name": "comment.block.cpp"
14272										},
14273										"3": {
14274											"patterns": [
14275												{
14276													"match": "\\*\\/",
14277													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14278												},
14279												{
14280													"match": "\\*",
14281													"name": "comment.block.cpp"
14282												}
14283											]
14284										}
14285									}
14286								}
14287							]
14288						},
14289						"8": {
14290							"patterns": [
14291								{
14292									"include": "#inline_comment"
14293								}
14294							]
14295						},
14296						"9": {
14297							"patterns": [
14298								{
14299									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14300									"captures": {
14301										"1": {
14302											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14303										},
14304										"2": {
14305											"name": "comment.block.cpp"
14306										},
14307										"3": {
14308											"patterns": [
14309												{
14310													"match": "\\*\\/",
14311													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14312												},
14313												{
14314													"match": "\\*",
14315													"name": "comment.block.cpp"
14316												}
14317											]
14318										}
14319									}
14320								}
14321							]
14322						},
14323						"10": {
14324							"patterns": [
14325								{
14326									"include": "#inline_comment"
14327								}
14328							]
14329						},
14330						"11": {
14331							"patterns": [
14332								{
14333									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14334									"captures": {
14335										"1": {
14336											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14337										},
14338										"2": {
14339											"name": "comment.block.cpp"
14340										},
14341										"3": {
14342											"patterns": [
14343												{
14344													"match": "\\*\\/",
14345													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14346												},
14347												{
14348													"match": "\\*",
14349													"name": "comment.block.cpp"
14350												}
14351											]
14352										}
14353									}
14354								}
14355							]
14356						},
14357						"12": {
14358							"name": "variable.other.object.declare.cpp"
14359						},
14360						"13": {
14361							"patterns": [
14362								{
14363									"include": "#inline_comment"
14364								}
14365							]
14366						},
14367						"14": {
14368							"patterns": [
14369								{
14370									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14371									"captures": {
14372										"1": {
14373											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14374										},
14375										"2": {
14376											"name": "comment.block.cpp"
14377										},
14378										"3": {
14379											"patterns": [
14380												{
14381													"match": "\\*\\/",
14382													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14383												},
14384												{
14385													"match": "\\*",
14386													"name": "comment.block.cpp"
14387												}
14388											]
14389										}
14390									}
14391								}
14392							]
14393						}
14394					}
14395				},
14396				{
14397					"match": "((?<!\\w)union(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
14398					"captures": {
14399						"1": {
14400							"name": "storage.type.union.declare.cpp"
14401						},
14402						"2": {
14403							"patterns": [
14404								{
14405									"include": "#inline_comment"
14406								}
14407							]
14408						},
14409						"3": {
14410							"patterns": [
14411								{
14412									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14413									"captures": {
14414										"1": {
14415											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14416										},
14417										"2": {
14418											"name": "comment.block.cpp"
14419										},
14420										"3": {
14421											"patterns": [
14422												{
14423													"match": "\\*\\/",
14424													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14425												},
14426												{
14427													"match": "\\*",
14428													"name": "comment.block.cpp"
14429												}
14430											]
14431										}
14432									}
14433								}
14434							]
14435						},
14436						"4": {
14437							"name": "entity.name.type.union.cpp"
14438						},
14439						"5": {
14440							"patterns": [
14441								{
14442									"match": "\\*",
14443									"name": "storage.modifier.pointer.cpp"
14444								},
14445								{
14446									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
14447									"captures": {
14448										"1": {
14449											"patterns": [
14450												{
14451													"include": "#inline_comment"
14452												}
14453											]
14454										},
14455										"2": {
14456											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14457										},
14458										"3": {
14459											"name": "comment.block.cpp"
14460										},
14461										"4": {
14462											"patterns": [
14463												{
14464													"match": "\\*\\/",
14465													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14466												},
14467												{
14468													"match": "\\*",
14469													"name": "comment.block.cpp"
14470												}
14471											]
14472										}
14473									},
14474									"name": "invalid.illegal.reference-type.cpp"
14475								},
14476								{
14477									"match": "\\&",
14478									"name": "storage.modifier.reference.cpp"
14479								}
14480							]
14481						},
14482						"6": {
14483							"patterns": [
14484								{
14485									"include": "#inline_comment"
14486								}
14487							]
14488						},
14489						"7": {
14490							"patterns": [
14491								{
14492									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14493									"captures": {
14494										"1": {
14495											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14496										},
14497										"2": {
14498											"name": "comment.block.cpp"
14499										},
14500										"3": {
14501											"patterns": [
14502												{
14503													"match": "\\*\\/",
14504													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14505												},
14506												{
14507													"match": "\\*",
14508													"name": "comment.block.cpp"
14509												}
14510											]
14511										}
14512									}
14513								}
14514							]
14515						},
14516						"8": {
14517							"patterns": [
14518								{
14519									"include": "#inline_comment"
14520								}
14521							]
14522						},
14523						"9": {
14524							"patterns": [
14525								{
14526									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14527									"captures": {
14528										"1": {
14529											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14530										},
14531										"2": {
14532											"name": "comment.block.cpp"
14533										},
14534										"3": {
14535											"patterns": [
14536												{
14537													"match": "\\*\\/",
14538													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14539												},
14540												{
14541													"match": "\\*",
14542													"name": "comment.block.cpp"
14543												}
14544											]
14545										}
14546									}
14547								}
14548							]
14549						},
14550						"10": {
14551							"patterns": [
14552								{
14553									"include": "#inline_comment"
14554								}
14555							]
14556						},
14557						"11": {
14558							"patterns": [
14559								{
14560									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14561									"captures": {
14562										"1": {
14563											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14564										},
14565										"2": {
14566											"name": "comment.block.cpp"
14567										},
14568										"3": {
14569											"patterns": [
14570												{
14571													"match": "\\*\\/",
14572													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14573												},
14574												{
14575													"match": "\\*",
14576													"name": "comment.block.cpp"
14577												}
14578											]
14579										}
14580									}
14581								}
14582							]
14583						},
14584						"12": {
14585							"name": "variable.other.object.declare.cpp"
14586						},
14587						"13": {
14588							"patterns": [
14589								{
14590									"include": "#inline_comment"
14591								}
14592							]
14593						},
14594						"14": {
14595							"patterns": [
14596								{
14597									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14598									"captures": {
14599										"1": {
14600											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14601										},
14602										"2": {
14603											"name": "comment.block.cpp"
14604										},
14605										"3": {
14606											"patterns": [
14607												{
14608													"match": "\\*\\/",
14609													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14610												},
14611												{
14612													"match": "\\*",
14613													"name": "comment.block.cpp"
14614												}
14615											]
14616										}
14617									}
14618								}
14619							]
14620						}
14621					}
14622				},
14623				{
14624					"match": "((?<!\\w)enum(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
14625					"captures": {
14626						"1": {
14627							"name": "storage.type.enum.declare.cpp"
14628						},
14629						"2": {
14630							"patterns": [
14631								{
14632									"include": "#inline_comment"
14633								}
14634							]
14635						},
14636						"3": {
14637							"patterns": [
14638								{
14639									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14640									"captures": {
14641										"1": {
14642											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14643										},
14644										"2": {
14645											"name": "comment.block.cpp"
14646										},
14647										"3": {
14648											"patterns": [
14649												{
14650													"match": "\\*\\/",
14651													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14652												},
14653												{
14654													"match": "\\*",
14655													"name": "comment.block.cpp"
14656												}
14657											]
14658										}
14659									}
14660								}
14661							]
14662						},
14663						"4": {
14664							"name": "entity.name.type.enum.cpp"
14665						},
14666						"5": {
14667							"patterns": [
14668								{
14669									"match": "\\*",
14670									"name": "storage.modifier.pointer.cpp"
14671								},
14672								{
14673									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
14674									"captures": {
14675										"1": {
14676											"patterns": [
14677												{
14678													"include": "#inline_comment"
14679												}
14680											]
14681										},
14682										"2": {
14683											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14684										},
14685										"3": {
14686											"name": "comment.block.cpp"
14687										},
14688										"4": {
14689											"patterns": [
14690												{
14691													"match": "\\*\\/",
14692													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14693												},
14694												{
14695													"match": "\\*",
14696													"name": "comment.block.cpp"
14697												}
14698											]
14699										}
14700									},
14701									"name": "invalid.illegal.reference-type.cpp"
14702								},
14703								{
14704									"match": "\\&",
14705									"name": "storage.modifier.reference.cpp"
14706								}
14707							]
14708						},
14709						"6": {
14710							"patterns": [
14711								{
14712									"include": "#inline_comment"
14713								}
14714							]
14715						},
14716						"7": {
14717							"patterns": [
14718								{
14719									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14720									"captures": {
14721										"1": {
14722											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14723										},
14724										"2": {
14725											"name": "comment.block.cpp"
14726										},
14727										"3": {
14728											"patterns": [
14729												{
14730													"match": "\\*\\/",
14731													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14732												},
14733												{
14734													"match": "\\*",
14735													"name": "comment.block.cpp"
14736												}
14737											]
14738										}
14739									}
14740								}
14741							]
14742						},
14743						"8": {
14744							"patterns": [
14745								{
14746									"include": "#inline_comment"
14747								}
14748							]
14749						},
14750						"9": {
14751							"patterns": [
14752								{
14753									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14754									"captures": {
14755										"1": {
14756											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14757										},
14758										"2": {
14759											"name": "comment.block.cpp"
14760										},
14761										"3": {
14762											"patterns": [
14763												{
14764													"match": "\\*\\/",
14765													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14766												},
14767												{
14768													"match": "\\*",
14769													"name": "comment.block.cpp"
14770												}
14771											]
14772										}
14773									}
14774								}
14775							]
14776						},
14777						"10": {
14778							"patterns": [
14779								{
14780									"include": "#inline_comment"
14781								}
14782							]
14783						},
14784						"11": {
14785							"patterns": [
14786								{
14787									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14788									"captures": {
14789										"1": {
14790											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14791										},
14792										"2": {
14793											"name": "comment.block.cpp"
14794										},
14795										"3": {
14796											"patterns": [
14797												{
14798													"match": "\\*\\/",
14799													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14800												},
14801												{
14802													"match": "\\*",
14803													"name": "comment.block.cpp"
14804												}
14805											]
14806										}
14807									}
14808								}
14809							]
14810						},
14811						"12": {
14812							"name": "variable.other.object.declare.cpp"
14813						},
14814						"13": {
14815							"patterns": [
14816								{
14817									"include": "#inline_comment"
14818								}
14819							]
14820						},
14821						"14": {
14822							"patterns": [
14823								{
14824									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14825									"captures": {
14826										"1": {
14827											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14828										},
14829										"2": {
14830											"name": "comment.block.cpp"
14831										},
14832										"3": {
14833											"patterns": [
14834												{
14835													"match": "\\*\\/",
14836													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14837												},
14838												{
14839													"match": "\\*",
14840													"name": "comment.block.cpp"
14841												}
14842											]
14843										}
14844									}
14845								}
14846							]
14847						}
14848					}
14849				},
14850				{
14851					"match": "((?<!\\w)class(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
14852					"captures": {
14853						"1": {
14854							"name": "storage.type.class.declare.cpp"
14855						},
14856						"2": {
14857							"patterns": [
14858								{
14859									"include": "#inline_comment"
14860								}
14861							]
14862						},
14863						"3": {
14864							"patterns": [
14865								{
14866									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14867									"captures": {
14868										"1": {
14869											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14870										},
14871										"2": {
14872											"name": "comment.block.cpp"
14873										},
14874										"3": {
14875											"patterns": [
14876												{
14877													"match": "\\*\\/",
14878													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14879												},
14880												{
14881													"match": "\\*",
14882													"name": "comment.block.cpp"
14883												}
14884											]
14885										}
14886									}
14887								}
14888							]
14889						},
14890						"4": {
14891							"name": "entity.name.type.class.cpp"
14892						},
14893						"5": {
14894							"patterns": [
14895								{
14896									"match": "\\*",
14897									"name": "storage.modifier.pointer.cpp"
14898								},
14899								{
14900									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
14901									"captures": {
14902										"1": {
14903											"patterns": [
14904												{
14905													"include": "#inline_comment"
14906												}
14907											]
14908										},
14909										"2": {
14910											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14911										},
14912										"3": {
14913											"name": "comment.block.cpp"
14914										},
14915										"4": {
14916											"patterns": [
14917												{
14918													"match": "\\*\\/",
14919													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14920												},
14921												{
14922													"match": "\\*",
14923													"name": "comment.block.cpp"
14924												}
14925											]
14926										}
14927									},
14928									"name": "invalid.illegal.reference-type.cpp"
14929								},
14930								{
14931									"match": "\\&",
14932									"name": "storage.modifier.reference.cpp"
14933								}
14934							]
14935						},
14936						"6": {
14937							"patterns": [
14938								{
14939									"include": "#inline_comment"
14940								}
14941							]
14942						},
14943						"7": {
14944							"patterns": [
14945								{
14946									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14947									"captures": {
14948										"1": {
14949											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14950										},
14951										"2": {
14952											"name": "comment.block.cpp"
14953										},
14954										"3": {
14955											"patterns": [
14956												{
14957													"match": "\\*\\/",
14958													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14959												},
14960												{
14961													"match": "\\*",
14962													"name": "comment.block.cpp"
14963												}
14964											]
14965										}
14966									}
14967								}
14968							]
14969						},
14970						"8": {
14971							"patterns": [
14972								{
14973									"include": "#inline_comment"
14974								}
14975							]
14976						},
14977						"9": {
14978							"patterns": [
14979								{
14980									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
14981									"captures": {
14982										"1": {
14983											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
14984										},
14985										"2": {
14986											"name": "comment.block.cpp"
14987										},
14988										"3": {
14989											"patterns": [
14990												{
14991													"match": "\\*\\/",
14992													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
14993												},
14994												{
14995													"match": "\\*",
14996													"name": "comment.block.cpp"
14997												}
14998											]
14999										}
15000									}
15001								}
15002							]
15003						},
15004						"10": {
15005							"patterns": [
15006								{
15007									"include": "#inline_comment"
15008								}
15009							]
15010						},
15011						"11": {
15012							"patterns": [
15013								{
15014									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
15015									"captures": {
15016										"1": {
15017											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15018										},
15019										"2": {
15020											"name": "comment.block.cpp"
15021										},
15022										"3": {
15023											"patterns": [
15024												{
15025													"match": "\\*\\/",
15026													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15027												},
15028												{
15029													"match": "\\*",
15030													"name": "comment.block.cpp"
15031												}
15032											]
15033										}
15034									}
15035								}
15036							]
15037						},
15038						"12": {
15039							"name": "variable.other.object.declare.cpp"
15040						},
15041						"13": {
15042							"patterns": [
15043								{
15044									"include": "#inline_comment"
15045								}
15046							]
15047						},
15048						"14": {
15049							"patterns": [
15050								{
15051									"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
15052									"captures": {
15053										"1": {
15054											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15055										},
15056										"2": {
15057											"name": "comment.block.cpp"
15058										},
15059										"3": {
15060											"patterns": [
15061												{
15062													"match": "\\*\\/",
15063													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15064												},
15065												{
15066													"match": "\\*",
15067													"name": "comment.block.cpp"
15068												}
15069											]
15070										}
15071									}
15072								}
15073							]
15074						}
15075					}
15076				}
15077			]
15078		},
15079		"static_assert": {
15080			"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)static_assert|_Static_assert(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
15081			"end": "\\)",
15082			"beginCaptures": {
15083				"1": {
15084					"patterns": [
15085						{
15086							"include": "#inline_comment"
15087						}
15088					]
15089				},
15090				"2": {
15091					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15092				},
15093				"3": {
15094					"name": "comment.block.cpp"
15095				},
15096				"4": {
15097					"patterns": [
15098						{
15099							"match": "\\*\\/",
15100							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15101						},
15102						{
15103							"match": "\\*",
15104							"name": "comment.block.cpp"
15105						}
15106					]
15107				},
15108				"5": {
15109					"name": "keyword.other.static_assert.cpp"
15110				},
15111				"6": {
15112					"patterns": [
15113						{
15114							"include": "#inline_comment"
15115						}
15116					]
15117				},
15118				"7": {
15119					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15120				},
15121				"8": {
15122					"name": "comment.block.cpp"
15123				},
15124				"9": {
15125					"patterns": [
15126						{
15127							"match": "\\*\\/",
15128							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15129						},
15130						{
15131							"match": "\\*",
15132							"name": "comment.block.cpp"
15133						}
15134					]
15135				},
15136				"10": {
15137					"name": "punctuation.section.arguments.begin.bracket.round.static_assert.cpp"
15138				}
15139			},
15140			"endCaptures": {
15141				"0": {
15142					"name": "punctuation.section.arguments.end.bracket.round.static_assert.cpp"
15143				}
15144			},
15145			"patterns": [
15146				{
15147					"begin": "(,)(?:(?:\\s)+)?(?=(?:L|u8|u|U(?:(?:\\s)+)?\\\")?)",
15148					"end": "(?=\\))",
15149					"beginCaptures": {
15150						"1": {
15151							"name": "punctuation.separator.delimiter.comma.cpp"
15152						}
15153					},
15154					"endCaptures": {},
15155					"name": "meta.static_assert.message.cpp",
15156					"patterns": [
15157						{
15158							"include": "#string_context"
15159						}
15160					]
15161				},
15162				{
15163					"include": "#evaluation_context"
15164				}
15165			]
15166		},
15167		"std_space": {
15168			"match": "(?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))",
15169			"captures": {
15170				"0": {
15171					"patterns": [
15172						{
15173							"include": "#inline_comment"
15174						}
15175					]
15176				},
15177				"1": {
15178					"patterns": [
15179						{
15180							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
15181							"captures": {
15182								"1": {
15183									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15184								},
15185								"2": {
15186									"name": "comment.block.cpp"
15187								},
15188								"3": {
15189									"patterns": [
15190										{
15191											"match": "\\*\\/",
15192											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15193										},
15194										{
15195											"match": "\\*",
15196											"name": "comment.block.cpp"
15197										}
15198									]
15199								}
15200							}
15201						}
15202					]
15203				}
15204			}
15205		},
15206		"storage_specifiers": {
15207			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\w))",
15208			"captures": {
15209				"1": {
15210					"patterns": [
15211						{
15212							"include": "#inline_comment"
15213						}
15214					]
15215				},
15216				"2": {
15217					"patterns": [
15218						{
15219							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
15220							"captures": {
15221								"1": {
15222									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15223								},
15224								"2": {
15225									"name": "comment.block.cpp"
15226								},
15227								"3": {
15228									"patterns": [
15229										{
15230											"match": "\\*\\/",
15231											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15232										},
15233										{
15234											"match": "\\*",
15235											"name": "comment.block.cpp"
15236										}
15237									]
15238								}
15239							}
15240						}
15241					]
15242				},
15243				"3": {
15244					"name": "storage.modifier.specifier.$3.cpp"
15245				}
15246			}
15247		},
15248		"storage_types": {
15249			"patterns": [
15250				{
15251					"include": "#storage_specifiers"
15252				},
15253				{
15254					"include": "#inline_builtin_storage_type"
15255				},
15256				{
15257					"include": "#decltype"
15258				},
15259				{
15260					"include": "#typename"
15261				}
15262			]
15263		},
15264		"string_context": {
15265			"patterns": [
15266				{
15267					"begin": "((?:u|u8|U|L)?)\"",
15268					"end": "\"",
15269					"beginCaptures": {
15270						"0": {
15271							"name": "punctuation.definition.string.begin.cpp"
15272						},
15273						"1": {
15274							"name": "meta.encoding.cpp"
15275						}
15276					},
15277					"endCaptures": {
15278						"0": {
15279							"name": "punctuation.definition.string.end.cpp"
15280						}
15281					},
15282					"name": "string.quoted.double.cpp",
15283					"patterns": [
15284						{
15285							"match": "(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8})",
15286							"name": "constant.character.escape.cpp"
15287						},
15288						{
15289							"match": "\\\\['\"?\\\\abfnrtv]",
15290							"name": "constant.character.escape.cpp"
15291						},
15292						{
15293							"match": "\\\\[0-7]{1,3}",
15294							"name": "constant.character.escape.cpp"
15295						},
15296						{
15297							"match": "(?:(\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\x[0-9a-fA-F]*|\\\\x)))",
15298							"captures": {
15299								"1": {
15300									"name": "constant.character.escape.cpp"
15301								},
15302								"2": {
15303									"name": "invalid.illegal.unknown-escape.cpp"
15304								}
15305							}
15306						},
15307						{
15308							"include": "#string_escapes_context_c"
15309						}
15310					]
15311				},
15312				{
15313					"begin": "(?<![0-9A-Fa-f])((?:u|u8|U|L)?)'",
15314					"end": "'",
15315					"beginCaptures": {
15316						"0": {
15317							"name": "punctuation.definition.string.begin.cpp"
15318						},
15319						"1": {
15320							"name": "meta.encoding.cpp"
15321						}
15322					},
15323					"endCaptures": {
15324						"0": {
15325							"name": "punctuation.definition.string.end.cpp"
15326						}
15327					},
15328					"name": "string.quoted.single.cpp",
15329					"patterns": [
15330						{
15331							"match": "(?:(\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\x[0-9a-fA-F]*|\\\\x)))",
15332							"captures": {
15333								"1": {
15334									"name": "constant.character.escape.cpp"
15335								},
15336								"2": {
15337									"name": "invalid.illegal.unknown-escape.cpp"
15338								}
15339							}
15340						},
15341						{
15342							"include": "#string_escapes_context_c"
15343						},
15344						{
15345							"include": "#line_continuation_character"
15346						}
15347					]
15348				},
15349				{
15350					"begin": "((?:[uUL]8?)?R)\\\"(?:(?:_r|re)|regex)\\(",
15351					"end": "\\)(?:(?:_r|re)|regex)\\\"",
15352					"beginCaptures": {
15353						"0": {
15354							"name": "punctuation.definition.string.begin.cpp"
15355						},
15356						"1": {
15357							"name": "meta.encoding.cpp"
15358						}
15359					},
15360					"endCaptures": {
15361						"0": {
15362							"name": "punctuation.definition.string.end.cpp"
15363						}
15364					},
15365					"name": "string.quoted.double.raw.regex.cpp",
15366					"patterns": [
15367						{
15368							"include": "source.regexp.python"
15369						}
15370					]
15371				},
15372				{
15373					"begin": "((?:[uUL]8?)?R)\\\"(?:glsl|GLSL)\\(",
15374					"end": "\\)(?:glsl|GLSL)\\\"",
15375					"beginCaptures": {
15376						"0": {
15377							"name": "punctuation.definition.string.begin.cpp"
15378						},
15379						"1": {
15380							"name": "meta.encoding.cpp"
15381						}
15382					},
15383					"endCaptures": {
15384						"0": {
15385							"name": "punctuation.definition.string.end.cpp"
15386						}
15387					},
15388					"name": "meta.string.quoted.double.raw.glsl.cpp",
15389					"patterns": [
15390						{
15391							"include": "source.glsl"
15392						}
15393					]
15394				},
15395				{
15396					"begin": "((?:[uUL]8?)?R)\\\"(?:[pP]?(?:sql|SQL)|d[dm]l)\\(",
15397					"end": "\\)(?:[pP]?(?:sql|SQL)|d[dm]l)\\\"",
15398					"beginCaptures": {
15399						"0": {
15400							"name": "punctuation.definition.string.begin.cpp"
15401						},
15402						"1": {
15403							"name": "meta.encoding.cpp"
15404						}
15405					},
15406					"endCaptures": {
15407						"0": {
15408							"name": "punctuation.definition.string.end.cpp"
15409						}
15410					},
15411					"name": "meta.string.quoted.double.raw.sql.cpp",
15412					"patterns": [
15413						{
15414							"include": "source.sql"
15415						}
15416					]
15417				},
15418				{
15419					"begin": "((?:u|u8|U|L)?R)\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(",
15420					"beginCaptures": {
15421						"0": {
15422							"name": "punctuation.definition.string.begin"
15423						},
15424						"1": {
15425							"name": "meta.encoding"
15426						},
15427						"3": {
15428							"name": "invalid.illegal.delimiter-too-long"
15429						}
15430					},
15431					"end": "\\)\\2(\\3)\"",
15432					"endCaptures": {
15433						"0": {
15434							"name": "punctuation.definition.string.end"
15435						},
15436						"1": {
15437							"name": "invalid.illegal.delimiter-too-long"
15438						}
15439					},
15440					"name": "string.quoted.double.raw"
15441				}
15442			]
15443		},
15444		"string_escapes_context_c": {
15445			"patterns": [
15446				{
15447					"match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?]   |\n[0-3][0-7]{,2}\t |\n[4-7]\\d?\t\t|\nx[a-fA-F0-9]{,2} |\nu[a-fA-F0-9]{,4} |\nU[a-fA-F0-9]{,8} )",
15448					"name": "constant.character.escape"
15449				},
15450				{
15451					"match": "\\\\.",
15452					"name": "invalid.illegal.unknown-escape"
15453				},
15454				{
15455					"match": "(?x) (?!%')(?!%\")%\n(\\d+\\$)?\t\t\t\t\t\t   # field (argument #)\n[#0\\- +']*\t\t\t\t\t\t  # flags\n[,;:_]?\t\t\t\t\t\t\t  # separator character (AltiVec)\n((-?\\d+)|\\*(-?\\d+\\$)?)?\t\t  # minimum field width\n(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?\t# precision\n(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n[diouxXDOUeEfFgGaACcSspn%]\t\t   # conversion type",
15456					"name": "constant.other.placeholder"
15457				}
15458			]
15459		},
15460		"struct_block": {
15461			"begin": "((?<!\\w)struct(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
15462			"end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
15463			"beginCaptures": {
15464				"0": {
15465					"name": "meta.head.struct.cpp"
15466				},
15467				"1": {
15468					"name": "storage.type.$1.cpp"
15469				},
15470				"2": {
15471					"patterns": [
15472						{
15473							"include": "#inline_comment"
15474						}
15475					]
15476				},
15477				"3": {
15478					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15479				},
15480				"4": {
15481					"name": "comment.block.cpp"
15482				},
15483				"5": {
15484					"patterns": [
15485						{
15486							"match": "\\*\\/",
15487							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15488						},
15489						{
15490							"match": "\\*",
15491							"name": "comment.block.cpp"
15492						}
15493					]
15494				},
15495				"6": {
15496					"patterns": [
15497						{
15498							"include": "#attributes_context"
15499						},
15500						{
15501							"include": "#number_literal"
15502						}
15503					]
15504				},
15505				"7": {
15506					"patterns": [
15507						{
15508							"include": "#inline_comment"
15509						}
15510					]
15511				},
15512				"8": {
15513					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15514				},
15515				"9": {
15516					"name": "comment.block.cpp"
15517				},
15518				"10": {
15519					"patterns": [
15520						{
15521							"match": "\\*\\/",
15522							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15523						},
15524						{
15525							"match": "\\*",
15526							"name": "comment.block.cpp"
15527						}
15528					]
15529				},
15530				"11": {
15531					"patterns": [
15532						{
15533							"match": "((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
15534							"captures": {
15535								"1": {
15536									"name": "storage.type.modifier.final.cpp"
15537								},
15538								"2": {
15539									"patterns": [
15540										{
15541											"include": "#inline_comment"
15542										}
15543									]
15544								},
15545								"3": {
15546									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15547								},
15548								"4": {
15549									"name": "comment.block.cpp"
15550								},
15551								"5": {
15552									"patterns": [
15553										{
15554											"match": "\\*\\/",
15555											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15556										},
15557										{
15558											"match": "\\*",
15559											"name": "comment.block.cpp"
15560										}
15561									]
15562								}
15563							}
15564						},
15565						{
15566							"match": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
15567							"captures": {
15568								"1": {
15569									"name": "entity.name.type.struct.cpp"
15570								},
15571								"2": {
15572									"patterns": [
15573										{
15574											"include": "#inline_comment"
15575										}
15576									]
15577								},
15578								"3": {
15579									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15580								},
15581								"4": {
15582									"name": "comment.block.cpp"
15583								},
15584								"5": {
15585									"patterns": [
15586										{
15587											"match": "\\*\\/",
15588											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15589										},
15590										{
15591											"match": "\\*",
15592											"name": "comment.block.cpp"
15593										}
15594									]
15595								},
15596								"6": {
15597									"name": "storage.type.modifier.final.cpp"
15598								},
15599								"7": {
15600									"patterns": [
15601										{
15602											"include": "#inline_comment"
15603										}
15604									]
15605								},
15606								"8": {
15607									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15608								},
15609								"9": {
15610									"name": "comment.block.cpp"
15611								},
15612								"10": {
15613									"patterns": [
15614										{
15615											"match": "\\*\\/",
15616											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15617										},
15618										{
15619											"match": "\\*",
15620											"name": "comment.block.cpp"
15621										}
15622									]
15623								}
15624							}
15625						},
15626						{
15627							"match": "DLLEXPORT",
15628							"name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
15629						},
15630						{
15631							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
15632							"name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
15633						}
15634					]
15635				},
15636				"12": {
15637					"patterns": [
15638						{
15639							"include": "#inline_comment"
15640						}
15641					]
15642				},
15643				"13": {
15644					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15645				},
15646				"14": {
15647					"name": "comment.block.cpp"
15648				},
15649				"15": {
15650					"patterns": [
15651						{
15652							"match": "\\*\\/",
15653							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15654						},
15655						{
15656							"match": "\\*",
15657							"name": "comment.block.cpp"
15658						}
15659					]
15660				},
15661				"16": {
15662					"patterns": [
15663						{
15664							"include": "#inline_comment"
15665						}
15666					]
15667				},
15668				"17": {
15669					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15670				},
15671				"18": {
15672					"name": "comment.block.cpp"
15673				},
15674				"19": {
15675					"patterns": [
15676						{
15677							"match": "\\*\\/",
15678							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15679						},
15680						{
15681							"match": "\\*",
15682							"name": "comment.block.cpp"
15683						}
15684					]
15685				},
15686				"20": {
15687					"name": "punctuation.separator.colon.inheritance.cpp"
15688				}
15689			},
15690			"endCaptures": {
15691				"1": {
15692					"name": "punctuation.terminator.statement.cpp"
15693				},
15694				"2": {
15695					"name": "punctuation.terminator.statement.cpp"
15696				}
15697			},
15698			"name": "meta.block.struct.cpp",
15699			"patterns": [
15700				{
15701					"begin": "\\G ?",
15702					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
15703					"beginCaptures": {},
15704					"endCaptures": {
15705						"0": {
15706							"name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
15707						}
15708					},
15709					"name": "meta.head.struct.cpp",
15710					"patterns": [
15711						{
15712							"include": "#ever_present_context"
15713						},
15714						{
15715							"include": "#inheritance_context"
15716						},
15717						{
15718							"include": "#template_call_range"
15719						}
15720					]
15721				},
15722				{
15723					"begin": "(?<=\\{|<%|\\?\\?<)",
15724					"end": "\\}|%>|\\?\\?>",
15725					"beginCaptures": {},
15726					"endCaptures": {
15727						"0": {
15728							"name": "punctuation.section.block.end.bracket.curly.struct.cpp"
15729						}
15730					},
15731					"name": "meta.body.struct.cpp",
15732					"patterns": [
15733						{
15734							"include": "#function_pointer"
15735						},
15736						{
15737							"include": "#static_assert"
15738						},
15739						{
15740							"include": "#constructor_inline"
15741						},
15742						{
15743							"include": "#destructor_inline"
15744						},
15745						{
15746							"include": "$self"
15747						}
15748					]
15749				},
15750				{
15751					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
15752					"end": "[\\s]*(?=;)",
15753					"beginCaptures": {},
15754					"endCaptures": {},
15755					"name": "meta.tail.struct.cpp",
15756					"patterns": [
15757						{
15758							"include": "$self"
15759						}
15760					]
15761				}
15762			]
15763		},
15764		"struct_declare": {
15765			"match": "((?<!\\w)struct(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
15766			"captures": {
15767				"1": {
15768					"name": "storage.type.struct.declare.cpp"
15769				},
15770				"2": {
15771					"patterns": [
15772						{
15773							"include": "#inline_comment"
15774						}
15775					]
15776				},
15777				"3": {
15778					"patterns": [
15779						{
15780							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
15781							"captures": {
15782								"1": {
15783									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15784								},
15785								"2": {
15786									"name": "comment.block.cpp"
15787								},
15788								"3": {
15789									"patterns": [
15790										{
15791											"match": "\\*\\/",
15792											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15793										},
15794										{
15795											"match": "\\*",
15796											"name": "comment.block.cpp"
15797										}
15798									]
15799								}
15800							}
15801						}
15802					]
15803				},
15804				"4": {
15805					"name": "entity.name.type.struct.cpp"
15806				},
15807				"5": {
15808					"patterns": [
15809						{
15810							"match": "\\*",
15811							"name": "storage.modifier.pointer.cpp"
15812						},
15813						{
15814							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
15815							"captures": {
15816								"1": {
15817									"patterns": [
15818										{
15819											"include": "#inline_comment"
15820										}
15821									]
15822								},
15823								"2": {
15824									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15825								},
15826								"3": {
15827									"name": "comment.block.cpp"
15828								},
15829								"4": {
15830									"patterns": [
15831										{
15832											"match": "\\*\\/",
15833											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15834										},
15835										{
15836											"match": "\\*",
15837											"name": "comment.block.cpp"
15838										}
15839									]
15840								}
15841							},
15842							"name": "invalid.illegal.reference-type.cpp"
15843						},
15844						{
15845							"match": "\\&",
15846							"name": "storage.modifier.reference.cpp"
15847						}
15848					]
15849				},
15850				"6": {
15851					"patterns": [
15852						{
15853							"include": "#inline_comment"
15854						}
15855					]
15856				},
15857				"7": {
15858					"patterns": [
15859						{
15860							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
15861							"captures": {
15862								"1": {
15863									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15864								},
15865								"2": {
15866									"name": "comment.block.cpp"
15867								},
15868								"3": {
15869									"patterns": [
15870										{
15871											"match": "\\*\\/",
15872											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15873										},
15874										{
15875											"match": "\\*",
15876											"name": "comment.block.cpp"
15877										}
15878									]
15879								}
15880							}
15881						}
15882					]
15883				},
15884				"8": {
15885					"patterns": [
15886						{
15887							"include": "#inline_comment"
15888						}
15889					]
15890				},
15891				"9": {
15892					"patterns": [
15893						{
15894							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
15895							"captures": {
15896								"1": {
15897									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15898								},
15899								"2": {
15900									"name": "comment.block.cpp"
15901								},
15902								"3": {
15903									"patterns": [
15904										{
15905											"match": "\\*\\/",
15906											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15907										},
15908										{
15909											"match": "\\*",
15910											"name": "comment.block.cpp"
15911										}
15912									]
15913								}
15914							}
15915						}
15916					]
15917				},
15918				"10": {
15919					"patterns": [
15920						{
15921							"include": "#inline_comment"
15922						}
15923					]
15924				},
15925				"11": {
15926					"patterns": [
15927						{
15928							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
15929							"captures": {
15930								"1": {
15931									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15932								},
15933								"2": {
15934									"name": "comment.block.cpp"
15935								},
15936								"3": {
15937									"patterns": [
15938										{
15939											"match": "\\*\\/",
15940											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15941										},
15942										{
15943											"match": "\\*",
15944											"name": "comment.block.cpp"
15945										}
15946									]
15947								}
15948							}
15949						}
15950					]
15951				},
15952				"12": {
15953					"name": "variable.other.object.declare.cpp"
15954				},
15955				"13": {
15956					"patterns": [
15957						{
15958							"include": "#inline_comment"
15959						}
15960					]
15961				},
15962				"14": {
15963					"patterns": [
15964						{
15965							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
15966							"captures": {
15967								"1": {
15968									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
15969								},
15970								"2": {
15971									"name": "comment.block.cpp"
15972								},
15973								"3": {
15974									"patterns": [
15975										{
15976											"match": "\\*\\/",
15977											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
15978										},
15979										{
15980											"match": "\\*",
15981											"name": "comment.block.cpp"
15982										}
15983									]
15984								}
15985							}
15986						}
15987					]
15988				}
15989			}
15990		},
15991		"switch_conditional_parentheses": {
15992			"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
15993			"end": "\\)",
15994			"beginCaptures": {
15995				"1": {
15996					"patterns": [
15997						{
15998							"include": "#inline_comment"
15999						}
16000					]
16001				},
16002				"2": {
16003					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16004				},
16005				"3": {
16006					"name": "comment.block.cpp"
16007				},
16008				"4": {
16009					"patterns": [
16010						{
16011							"match": "\\*\\/",
16012							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16013						},
16014						{
16015							"match": "\\*",
16016							"name": "comment.block.cpp"
16017						}
16018					]
16019				},
16020				"5": {
16021					"name": "punctuation.section.parens.begin.bracket.round.conditional.switch.cpp"
16022				}
16023			},
16024			"endCaptures": {
16025				"0": {
16026					"name": "punctuation.section.parens.end.bracket.round.conditional.switch.cpp"
16027				}
16028			},
16029			"name": "meta.conditional.switch.cpp",
16030			"patterns": [
16031				{
16032					"include": "#evaluation_context"
16033				},
16034				{
16035					"include": "#c_conditional_context"
16036				}
16037			]
16038		},
16039		"switch_statement": {
16040			"begin": "((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)switch(?!\\w))",
16041			"end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
16042			"beginCaptures": {
16043				"0": {
16044					"name": "meta.head.switch.cpp"
16045				},
16046				"1": {
16047					"patterns": [
16048						{
16049							"include": "#inline_comment"
16050						}
16051					]
16052				},
16053				"2": {
16054					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16055				},
16056				"3": {
16057					"name": "comment.block.cpp"
16058				},
16059				"4": {
16060					"patterns": [
16061						{
16062							"match": "\\*\\/",
16063							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16064						},
16065						{
16066							"match": "\\*",
16067							"name": "comment.block.cpp"
16068						}
16069					]
16070				},
16071				"5": {
16072					"name": "keyword.control.switch.cpp"
16073				}
16074			},
16075			"endCaptures": {},
16076			"name": "meta.block.switch.cpp",
16077			"patterns": [
16078				{
16079					"begin": "\\G ?",
16080					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
16081					"beginCaptures": {},
16082					"endCaptures": {
16083						"0": {
16084							"name": "punctuation.section.block.begin.bracket.curly.switch.cpp"
16085						}
16086					},
16087					"name": "meta.head.switch.cpp",
16088					"patterns": [
16089						{
16090							"include": "#switch_conditional_parentheses"
16091						},
16092						{
16093							"include": "$self"
16094						}
16095					]
16096				},
16097				{
16098					"begin": "(?<=\\{|<%|\\?\\?<)",
16099					"end": "\\}|%>|\\?\\?>",
16100					"beginCaptures": {},
16101					"endCaptures": {
16102						"0": {
16103							"name": "punctuation.section.block.end.bracket.curly.switch.cpp"
16104						}
16105					},
16106					"name": "meta.body.switch.cpp",
16107					"patterns": [
16108						{
16109							"include": "#default_statement"
16110						},
16111						{
16112							"include": "#case_statement"
16113						},
16114						{
16115							"include": "$self"
16116						},
16117						{
16118							"include": "#block_innards"
16119						}
16120					]
16121				},
16122				{
16123					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
16124					"end": "[\\s]*(?=;)",
16125					"beginCaptures": {},
16126					"endCaptures": {},
16127					"name": "meta.tail.switch.cpp",
16128					"patterns": [
16129						{
16130							"include": "$self"
16131						}
16132					]
16133				}
16134			]
16135		},
16136		"template_argument_defaulted": {
16137			"match": "(?<=<|,)(?:(?:\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\s)+)*)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\s)+)?([=])",
16138			"captures": {
16139				"1": {
16140					"name": "storage.type.template.cpp"
16141				},
16142				"2": {
16143					"name": "entity.name.type.template.cpp"
16144				},
16145				"3": {
16146					"name": "keyword.operator.assignment.cpp"
16147				}
16148			}
16149		},
16150		"template_call_context": {
16151			"patterns": [
16152				{
16153					"include": "#ever_present_context"
16154				},
16155				{
16156					"include": "#template_call_range"
16157				},
16158				{
16159					"include": "#storage_types"
16160				},
16161				{
16162					"include": "#language_constants"
16163				},
16164				{
16165					"include": "#scope_resolution_template_call_inner_generated"
16166				},
16167				{
16168					"include": "#operators"
16169				},
16170				{
16171					"include": "#number_literal"
16172				},
16173				{
16174					"include": "#string_context"
16175				},
16176				{
16177					"include": "#comma_in_template_argument"
16178				},
16179				{
16180					"include": "#qualified_type"
16181				}
16182			]
16183		},
16184		"template_call_innards": {
16185			"match": "((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<1>?)+>)(?:\\s)*+",
16186			"captures": {
16187				"0": {
16188					"patterns": [
16189						{
16190							"include": "#template_call_range"
16191						}
16192					]
16193				}
16194			},
16195			"name": "meta.template.call.cpp"
16196		},
16197		"template_call_range": {
16198			"begin": "<",
16199			"end": ">",
16200			"beginCaptures": {
16201				"0": {
16202					"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
16203				}
16204			},
16205			"endCaptures": {
16206				"0": {
16207					"name": "punctuation.section.angle-brackets.end.template.call.cpp"
16208				}
16209			},
16210			"name": "meta.template.call.cpp",
16211			"patterns": [
16212				{
16213					"include": "#template_call_context"
16214				}
16215			]
16216		},
16217		"template_definition": {
16218			"begin": "(?<!\\w)(template)(?:(?:\\s)+)?(<)",
16219			"end": ">",
16220			"beginCaptures": {
16221				"1": {
16222					"name": "storage.type.template.cpp"
16223				},
16224				"2": {
16225					"name": "punctuation.section.angle-brackets.start.template.definition.cpp"
16226				}
16227			},
16228			"endCaptures": {
16229				"0": {
16230					"name": "punctuation.section.angle-brackets.end.template.definition.cpp"
16231				}
16232			},
16233			"name": "meta.template.definition.cpp",
16234			"patterns": [
16235				{
16236					"begin": "(?<=\\w)(?:(?:\\s)+)?<",
16237					"end": ">",
16238					"beginCaptures": {
16239						"0": {
16240							"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
16241						}
16242					},
16243					"endCaptures": {
16244						"0": {
16245							"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
16246						}
16247					},
16248					"patterns": [
16249						{
16250							"include": "#template_call_context"
16251						}
16252					]
16253				},
16254				{
16255					"include": "#template_definition_context"
16256				}
16257			]
16258		},
16259		"template_definition_argument": {
16260			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)|((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?:\\s)+)+)((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))|((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)(?:(?:\\s)+)?(\\.\\.\\.)(?:(?:\\s)+)?((?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))(?:(?:\\s)+)?(?:(,)|(?=>|$))",
16261			"captures": {
16262				"1": {
16263					"patterns": [
16264						{
16265							"include": "#inline_comment"
16266						}
16267					]
16268				},
16269				"2": {
16270					"patterns": [
16271						{
16272							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16273							"captures": {
16274								"1": {
16275									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16276								},
16277								"2": {
16278									"name": "comment.block.cpp"
16279								},
16280								"3": {
16281									"patterns": [
16282										{
16283											"match": "\\*\\/",
16284											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16285										},
16286										{
16287											"match": "\\*",
16288											"name": "comment.block.cpp"
16289										}
16290									]
16291								}
16292							}
16293						}
16294					]
16295				},
16296				"3": {
16297					"name": "storage.type.template.argument.$3.cpp"
16298				},
16299				"4": {
16300					"patterns": [
16301						{
16302							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
16303							"name": "storage.type.template.argument.$0.cpp"
16304						}
16305					]
16306				},
16307				"5": {
16308					"name": "entity.name.type.template.cpp"
16309				},
16310				"6": {
16311					"name": "storage.type.template.cpp"
16312				},
16313				"7": {
16314					"name": "punctuation.vararg-ellipses.template.definition.cpp"
16315				},
16316				"8": {
16317					"name": "entity.name.type.template.cpp"
16318				},
16319				"9": {
16320					"name": "punctuation.separator.delimiter.comma.template.argument.cpp"
16321				}
16322			}
16323		},
16324		"template_definition_context": {
16325			"patterns": [
16326				{
16327					"include": "#scope_resolution_template_definition_inner_generated"
16328				},
16329				{
16330					"include": "#template_definition_argument"
16331				},
16332				{
16333					"include": "#template_argument_defaulted"
16334				},
16335				{
16336					"include": "#template_call_innards"
16337				},
16338				{
16339					"include": "#evaluation_context"
16340				}
16341			]
16342		},
16343		"template_isolated_definition": {
16344			"match": "(?<!\\w)(template)(?:(?:\\s)+)?(<)(.*)(>(?:(?:\\s)+)?$)",
16345			"captures": {
16346				"1": {
16347					"name": "storage.type.template.cpp"
16348				},
16349				"2": {
16350					"name": "punctuation.section.angle-brackets.start.template.definition.cpp"
16351				},
16352				"3": {
16353					"name": "meta.template.definition.cpp",
16354					"patterns": [
16355						{
16356							"include": "#template_definition_context"
16357						}
16358					]
16359				},
16360				"4": {
16361					"name": "punctuation.section.angle-brackets.end.template.definition.cpp"
16362				}
16363			}
16364		},
16365		"ternary_operator": {
16366			"begin": "\\?",
16367			"end": ":",
16368			"beginCaptures": {
16369				"0": {
16370					"name": "keyword.operator.ternary.cpp"
16371				}
16372			},
16373			"endCaptures": {
16374				"0": {
16375					"name": "keyword.operator.ternary.cpp"
16376				}
16377			},
16378			"patterns": [
16379				{
16380					"include": "#ever_present_context"
16381				},
16382				{
16383					"include": "#string_context"
16384				},
16385				{
16386					"include": "#number_literal"
16387				},
16388				{
16389					"include": "#method_access"
16390				},
16391				{
16392					"include": "#member_access"
16393				},
16394				{
16395					"include": "#predefined_macros"
16396				},
16397				{
16398					"include": "#operators"
16399				},
16400				{
16401					"include": "#memory_operators"
16402				},
16403				{
16404					"include": "#wordlike_operators"
16405				},
16406				{
16407					"include": "#type_casting_operators"
16408				},
16409				{
16410					"include": "#control_flow_keywords"
16411				},
16412				{
16413					"include": "#exception_keywords"
16414				},
16415				{
16416					"include": "#the_this_keyword"
16417				},
16418				{
16419					"include": "#language_constants"
16420				},
16421				{
16422					"include": "#builtin_storage_type_initilizer"
16423				},
16424				{
16425					"include": "#qualifiers_and_specifiers_post_parameters"
16426				},
16427				{
16428					"include": "#functional_specifiers_pre_parameters"
16429				},
16430				{
16431					"include": "#storage_types"
16432				},
16433				{
16434					"include": "#lambdas"
16435				},
16436				{
16437					"include": "#attributes_context"
16438				},
16439				{
16440					"include": "#parentheses"
16441				},
16442				{
16443					"include": "#function_call"
16444				},
16445				{
16446					"include": "#scope_resolution_inner_generated"
16447				},
16448				{
16449					"include": "#square_brackets"
16450				},
16451				{
16452					"include": "#semicolon"
16453				},
16454				{
16455					"include": "#comma"
16456				}
16457			],
16458			"applyEndPatternLast": 1
16459		},
16460		"the_this_keyword": {
16461			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)this(?!\\w))",
16462			"captures": {
16463				"1": {
16464					"patterns": [
16465						{
16466							"include": "#inline_comment"
16467						}
16468					]
16469				},
16470				"2": {
16471					"patterns": [
16472						{
16473							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16474							"captures": {
16475								"1": {
16476									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16477								},
16478								"2": {
16479									"name": "comment.block.cpp"
16480								},
16481								"3": {
16482									"patterns": [
16483										{
16484											"match": "\\*\\/",
16485											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16486										},
16487										{
16488											"match": "\\*",
16489											"name": "comment.block.cpp"
16490										}
16491									]
16492								}
16493							}
16494						}
16495					]
16496				},
16497				"3": {
16498					"name": "variable.language.this.cpp"
16499				}
16500			}
16501		},
16502		"type_alias": {
16503			"match": "(using)(?:(?:\\s)+)?(?!namespace)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)?(?![\\w<:.]))(?:(?:\\s)+)?(\\=)(?:(?:\\s)+)?((?:typename)?)(?:(?:\\s)+)?((?:(?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))(?<!\\w)(?:(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\w)(?:\\s)+)+)?(?:(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<29>?)+>)?(?![\\w<:.]))|(.*(?<!;)))(?:(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?:(\\[)(\\w*)(\\])(?:(?:\\s)+)?)?(?:(?:\\s)+)?(?:(;)|\\n)",
16504			"captures": {
16505				"1": {
16506					"name": "keyword.other.using.directive.cpp"
16507				},
16508				"2": {
16509					"name": "meta.qualified_type.cpp",
16510					"patterns": [
16511						{
16512							"match": "::",
16513							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
16514						},
16515						{
16516							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
16517							"name": "storage.type.$0.cpp"
16518						},
16519						{
16520							"include": "#attributes_context"
16521						},
16522						{
16523							"include": "#storage_types"
16524						},
16525						{
16526							"include": "#number_literal"
16527						},
16528						{
16529							"include": "#string_context"
16530						},
16531						{
16532							"include": "#comma"
16533						},
16534						{
16535							"include": "#scope_resolution_inner_generated"
16536						},
16537						{
16538							"begin": "<",
16539							"end": ">",
16540							"beginCaptures": {
16541								"0": {
16542									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
16543								}
16544							},
16545							"endCaptures": {
16546								"0": {
16547									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
16548								}
16549							},
16550							"name": "meta.template.call.cpp",
16551							"patterns": [
16552								{
16553									"include": "#template_call_context"
16554								}
16555							]
16556						},
16557						{
16558							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
16559							"name": "entity.name.type.cpp"
16560						}
16561					]
16562				},
16563				"3": {
16564					"patterns": [
16565						{
16566							"include": "#attributes_context"
16567						},
16568						{
16569							"include": "#number_literal"
16570						}
16571					]
16572				},
16573				"4": {
16574					"patterns": [
16575						{
16576							"include": "#inline_comment"
16577						}
16578					]
16579				},
16580				"5": {
16581					"patterns": [
16582						{
16583							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16584							"captures": {
16585								"1": {
16586									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16587								},
16588								"2": {
16589									"name": "comment.block.cpp"
16590								},
16591								"3": {
16592									"patterns": [
16593										{
16594											"match": "\\*\\/",
16595											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16596										},
16597										{
16598											"match": "\\*",
16599											"name": "comment.block.cpp"
16600										}
16601									]
16602								}
16603							}
16604						}
16605					]
16606				},
16607				"6": {
16608					"patterns": [
16609						{
16610							"include": "#inline_comment"
16611						}
16612					]
16613				},
16614				"7": {
16615					"patterns": [
16616						{
16617							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16618							"captures": {
16619								"1": {
16620									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16621								},
16622								"2": {
16623									"name": "comment.block.cpp"
16624								},
16625								"3": {
16626									"patterns": [
16627										{
16628											"match": "\\*\\/",
16629											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16630										},
16631										{
16632											"match": "\\*",
16633											"name": "comment.block.cpp"
16634										}
16635									]
16636								}
16637							}
16638						}
16639					]
16640				},
16641				"8": {
16642					"patterns": [
16643						{
16644							"match": "::",
16645							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
16646						},
16647						{
16648							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
16649							"name": "entity.name.scope-resolution.type.cpp"
16650						},
16651						{
16652							"include": "#template_call_range"
16653						}
16654					]
16655				},
16656				"9": {
16657					"patterns": [
16658						{
16659							"include": "#template_call_range"
16660						}
16661					]
16662				},
16663				"11": {
16664					"patterns": [
16665						{
16666							"include": "#inline_comment"
16667						}
16668					]
16669				},
16670				"12": {
16671					"patterns": [
16672						{
16673							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16674							"captures": {
16675								"1": {
16676									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16677								},
16678								"2": {
16679									"name": "comment.block.cpp"
16680								},
16681								"3": {
16682									"patterns": [
16683										{
16684											"match": "\\*\\/",
16685											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16686										},
16687										{
16688											"match": "\\*",
16689											"name": "comment.block.cpp"
16690										}
16691									]
16692								}
16693							}
16694						}
16695					]
16696				},
16697				"14": {
16698					"name": "keyword.operator.assignment.cpp"
16699				},
16700				"15": {
16701					"name": "keyword.other.typename.cpp"
16702				},
16703				"16": {
16704					"patterns": [
16705						{
16706							"include": "#storage_specifiers"
16707						}
16708					]
16709				},
16710				"17": {
16711					"patterns": [
16712						{
16713							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16714							"captures": {
16715								"1": {
16716									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16717								},
16718								"2": {
16719									"name": "comment.block.cpp"
16720								},
16721								"3": {
16722									"patterns": [
16723										{
16724											"match": "\\*\\/",
16725											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16726										},
16727										{
16728											"match": "\\*",
16729											"name": "comment.block.cpp"
16730										}
16731									]
16732								}
16733							}
16734						}
16735					]
16736				},
16737				"18": {
16738					"name": "meta.qualified_type.cpp",
16739					"patterns": [
16740						{
16741							"match": "::",
16742							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
16743						},
16744						{
16745							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
16746							"name": "storage.type.$0.cpp"
16747						},
16748						{
16749							"include": "#attributes_context"
16750						},
16751						{
16752							"include": "#storage_types"
16753						},
16754						{
16755							"include": "#number_literal"
16756						},
16757						{
16758							"include": "#string_context"
16759						},
16760						{
16761							"include": "#comma"
16762						},
16763						{
16764							"include": "#scope_resolution_inner_generated"
16765						},
16766						{
16767							"begin": "<",
16768							"end": ">",
16769							"beginCaptures": {
16770								"0": {
16771									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
16772								}
16773							},
16774							"endCaptures": {
16775								"0": {
16776									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
16777								}
16778							},
16779							"name": "meta.template.call.cpp",
16780							"patterns": [
16781								{
16782									"include": "#template_call_context"
16783								}
16784							]
16785						},
16786						{
16787							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
16788							"name": "entity.name.type.cpp"
16789						}
16790					]
16791				},
16792				"19": {
16793					"patterns": [
16794						{
16795							"include": "#attributes_context"
16796						},
16797						{
16798							"include": "#number_literal"
16799						}
16800					]
16801				},
16802				"20": {
16803					"patterns": [
16804						{
16805							"include": "#inline_comment"
16806						}
16807					]
16808				},
16809				"21": {
16810					"patterns": [
16811						{
16812							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16813							"captures": {
16814								"1": {
16815									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16816								},
16817								"2": {
16818									"name": "comment.block.cpp"
16819								},
16820								"3": {
16821									"patterns": [
16822										{
16823											"match": "\\*\\/",
16824											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16825										},
16826										{
16827											"match": "\\*",
16828											"name": "comment.block.cpp"
16829										}
16830									]
16831								}
16832							}
16833						}
16834					]
16835				},
16836				"22": {
16837					"patterns": [
16838						{
16839							"include": "#inline_comment"
16840						}
16841					]
16842				},
16843				"23": {
16844					"patterns": [
16845						{
16846							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16847							"captures": {
16848								"1": {
16849									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16850								},
16851								"2": {
16852									"name": "comment.block.cpp"
16853								},
16854								"3": {
16855									"patterns": [
16856										{
16857											"match": "\\*\\/",
16858											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16859										},
16860										{
16861											"match": "\\*",
16862											"name": "comment.block.cpp"
16863										}
16864									]
16865								}
16866							}
16867						}
16868					]
16869				},
16870				"24": {
16871					"patterns": [
16872						{
16873							"match": "::",
16874							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
16875						},
16876						{
16877							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
16878							"name": "entity.name.scope-resolution.type.cpp"
16879						},
16880						{
16881							"include": "#template_call_range"
16882						}
16883					]
16884				},
16885				"25": {
16886					"patterns": [
16887						{
16888							"include": "#template_call_range"
16889						}
16890					]
16891				},
16892				"27": {
16893					"patterns": [
16894						{
16895							"include": "#inline_comment"
16896						}
16897					]
16898				},
16899				"28": {
16900					"patterns": [
16901						{
16902							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16903							"captures": {
16904								"1": {
16905									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16906								},
16907								"2": {
16908									"name": "comment.block.cpp"
16909								},
16910								"3": {
16911									"patterns": [
16912										{
16913											"match": "\\*\\/",
16914											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16915										},
16916										{
16917											"match": "\\*",
16918											"name": "comment.block.cpp"
16919										}
16920									]
16921								}
16922							}
16923						}
16924					]
16925				},
16926				"30": {
16927					"name": "meta.declaration.type.alias.value.unknown.cpp",
16928					"patterns": [
16929						{
16930							"include": "#evaluation_context"
16931						}
16932					]
16933				},
16934				"31": {
16935					"patterns": [
16936						{
16937							"match": "\\*",
16938							"name": "storage.modifier.pointer.cpp"
16939						},
16940						{
16941							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
16942							"captures": {
16943								"1": {
16944									"patterns": [
16945										{
16946											"include": "#inline_comment"
16947										}
16948									]
16949								},
16950								"2": {
16951									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16952								},
16953								"3": {
16954									"name": "comment.block.cpp"
16955								},
16956								"4": {
16957									"patterns": [
16958										{
16959											"match": "\\*\\/",
16960											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
16961										},
16962										{
16963											"match": "\\*",
16964											"name": "comment.block.cpp"
16965										}
16966									]
16967								}
16968							},
16969							"name": "invalid.illegal.reference-type.cpp"
16970						},
16971						{
16972							"match": "\\&",
16973							"name": "storage.modifier.reference.cpp"
16974						}
16975					]
16976				},
16977				"32": {
16978					"patterns": [
16979						{
16980							"include": "#inline_comment"
16981						}
16982					]
16983				},
16984				"33": {
16985					"patterns": [
16986						{
16987							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
16988							"captures": {
16989								"1": {
16990									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
16991								},
16992								"2": {
16993									"name": "comment.block.cpp"
16994								},
16995								"3": {
16996									"patterns": [
16997										{
16998											"match": "\\*\\/",
16999											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17000										},
17001										{
17002											"match": "\\*",
17003											"name": "comment.block.cpp"
17004										}
17005									]
17006								}
17007							}
17008						}
17009					]
17010				},
17011				"34": {
17012					"patterns": [
17013						{
17014							"include": "#inline_comment"
17015						}
17016					]
17017				},
17018				"35": {
17019					"patterns": [
17020						{
17021							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
17022							"captures": {
17023								"1": {
17024									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17025								},
17026								"2": {
17027									"name": "comment.block.cpp"
17028								},
17029								"3": {
17030									"patterns": [
17031										{
17032											"match": "\\*\\/",
17033											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17034										},
17035										{
17036											"match": "\\*",
17037											"name": "comment.block.cpp"
17038										}
17039									]
17040								}
17041							}
17042						}
17043					]
17044				},
17045				"36": {
17046					"patterns": [
17047						{
17048							"include": "#inline_comment"
17049						}
17050					]
17051				},
17052				"37": {
17053					"patterns": [
17054						{
17055							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
17056							"captures": {
17057								"1": {
17058									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17059								},
17060								"2": {
17061									"name": "comment.block.cpp"
17062								},
17063								"3": {
17064									"patterns": [
17065										{
17066											"match": "\\*\\/",
17067											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17068										},
17069										{
17070											"match": "\\*",
17071											"name": "comment.block.cpp"
17072										}
17073									]
17074								}
17075							}
17076						}
17077					]
17078				},
17079				"38": {
17080					"name": "punctuation.definition.begin.bracket.square.cpp"
17081				},
17082				"39": {
17083					"patterns": [
17084						{
17085							"include": "#evaluation_context"
17086						}
17087					]
17088				},
17089				"40": {
17090					"name": "punctuation.definition.end.bracket.square.cpp"
17091				},
17092				"41": {
17093					"name": "punctuation.terminator.statement.cpp"
17094				}
17095			},
17096			"name": "meta.declaration.type.alias.cpp"
17097		},
17098		"type_casting_operators": {
17099			"match": "((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:(?:reinterpret_cast)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast))(?!\\w))",
17100			"captures": {
17101				"1": {
17102					"patterns": [
17103						{
17104							"include": "#inline_comment"
17105						}
17106					]
17107				},
17108				"2": {
17109					"patterns": [
17110						{
17111							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
17112							"captures": {
17113								"1": {
17114									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17115								},
17116								"2": {
17117									"name": "comment.block.cpp"
17118								},
17119								"3": {
17120									"patterns": [
17121										{
17122											"match": "\\*\\/",
17123											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17124										},
17125										{
17126											"match": "\\*",
17127											"name": "comment.block.cpp"
17128										}
17129									]
17130								}
17131							}
17132						}
17133					]
17134				},
17135				"3": {
17136					"name": "keyword.operator.wordlike.cpp keyword.operator.cast.$3.cpp"
17137				}
17138			}
17139		},
17140		"typedef_class": {
17141			"begin": "((?<!\\w)typedef(?!\\w))(?:(?:\\s)+)?(?=(?<!\\w)class(?!\\w))",
17142			"end": "(?<=;)",
17143			"beginCaptures": {
17144				"1": {
17145					"name": "keyword.other.typedef.cpp"
17146				}
17147			},
17148			"endCaptures": {},
17149			"patterns": [
17150				{
17151					"begin": "((?<!\\w)class(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
17152					"end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
17153					"beginCaptures": {
17154						"0": {
17155							"name": "meta.head.class.cpp"
17156						},
17157						"1": {
17158							"name": "storage.type.$1.cpp"
17159						},
17160						"2": {
17161							"patterns": [
17162								{
17163									"include": "#inline_comment"
17164								}
17165							]
17166						},
17167						"3": {
17168							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17169						},
17170						"4": {
17171							"name": "comment.block.cpp"
17172						},
17173						"5": {
17174							"patterns": [
17175								{
17176									"match": "\\*\\/",
17177									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17178								},
17179								{
17180									"match": "\\*",
17181									"name": "comment.block.cpp"
17182								}
17183							]
17184						},
17185						"6": {
17186							"patterns": [
17187								{
17188									"include": "#attributes_context"
17189								},
17190								{
17191									"include": "#number_literal"
17192								}
17193							]
17194						},
17195						"7": {
17196							"patterns": [
17197								{
17198									"include": "#inline_comment"
17199								}
17200							]
17201						},
17202						"8": {
17203							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17204						},
17205						"9": {
17206							"name": "comment.block.cpp"
17207						},
17208						"10": {
17209							"patterns": [
17210								{
17211									"match": "\\*\\/",
17212									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17213								},
17214								{
17215									"match": "\\*",
17216									"name": "comment.block.cpp"
17217								}
17218							]
17219						},
17220						"11": {
17221							"patterns": [
17222								{
17223									"match": "((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
17224									"captures": {
17225										"1": {
17226											"name": "storage.type.modifier.final.cpp"
17227										},
17228										"2": {
17229											"patterns": [
17230												{
17231													"include": "#inline_comment"
17232												}
17233											]
17234										},
17235										"3": {
17236											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17237										},
17238										"4": {
17239											"name": "comment.block.cpp"
17240										},
17241										"5": {
17242											"patterns": [
17243												{
17244													"match": "\\*\\/",
17245													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17246												},
17247												{
17248													"match": "\\*",
17249													"name": "comment.block.cpp"
17250												}
17251											]
17252										}
17253									}
17254								},
17255								{
17256									"match": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
17257									"captures": {
17258										"1": {
17259											"name": "entity.name.type.class.cpp"
17260										},
17261										"2": {
17262											"patterns": [
17263												{
17264													"include": "#inline_comment"
17265												}
17266											]
17267										},
17268										"3": {
17269											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17270										},
17271										"4": {
17272											"name": "comment.block.cpp"
17273										},
17274										"5": {
17275											"patterns": [
17276												{
17277													"match": "\\*\\/",
17278													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17279												},
17280												{
17281													"match": "\\*",
17282													"name": "comment.block.cpp"
17283												}
17284											]
17285										},
17286										"6": {
17287											"name": "storage.type.modifier.final.cpp"
17288										},
17289										"7": {
17290											"patterns": [
17291												{
17292													"include": "#inline_comment"
17293												}
17294											]
17295										},
17296										"8": {
17297											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17298										},
17299										"9": {
17300											"name": "comment.block.cpp"
17301										},
17302										"10": {
17303											"patterns": [
17304												{
17305													"match": "\\*\\/",
17306													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17307												},
17308												{
17309													"match": "\\*",
17310													"name": "comment.block.cpp"
17311												}
17312											]
17313										}
17314									}
17315								},
17316								{
17317									"match": "DLLEXPORT",
17318									"name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
17319								},
17320								{
17321									"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
17322									"name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
17323								}
17324							]
17325						},
17326						"12": {
17327							"patterns": [
17328								{
17329									"include": "#inline_comment"
17330								}
17331							]
17332						},
17333						"13": {
17334							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17335						},
17336						"14": {
17337							"name": "comment.block.cpp"
17338						},
17339						"15": {
17340							"patterns": [
17341								{
17342									"match": "\\*\\/",
17343									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17344								},
17345								{
17346									"match": "\\*",
17347									"name": "comment.block.cpp"
17348								}
17349							]
17350						},
17351						"16": {
17352							"patterns": [
17353								{
17354									"include": "#inline_comment"
17355								}
17356							]
17357						},
17358						"17": {
17359							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17360						},
17361						"18": {
17362							"name": "comment.block.cpp"
17363						},
17364						"19": {
17365							"patterns": [
17366								{
17367									"match": "\\*\\/",
17368									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17369								},
17370								{
17371									"match": "\\*",
17372									"name": "comment.block.cpp"
17373								}
17374							]
17375						},
17376						"20": {
17377							"name": "punctuation.separator.colon.inheritance.cpp"
17378						}
17379					},
17380					"endCaptures": {
17381						"1": {
17382							"name": "punctuation.terminator.statement.cpp"
17383						},
17384						"2": {
17385							"name": "punctuation.terminator.statement.cpp"
17386						}
17387					},
17388					"name": "meta.block.class.cpp",
17389					"patterns": [
17390						{
17391							"begin": "\\G ?",
17392							"end": "(?:\\{|<%|\\?\\?<|(?=;))",
17393							"beginCaptures": {},
17394							"endCaptures": {
17395								"0": {
17396									"name": "punctuation.section.block.begin.bracket.curly.class.cpp"
17397								}
17398							},
17399							"name": "meta.head.class.cpp",
17400							"patterns": [
17401								{
17402									"include": "#ever_present_context"
17403								},
17404								{
17405									"include": "#inheritance_context"
17406								},
17407								{
17408									"include": "#template_call_range"
17409								}
17410							]
17411						},
17412						{
17413							"begin": "(?<=\\{|<%|\\?\\?<)",
17414							"end": "\\}|%>|\\?\\?>",
17415							"beginCaptures": {},
17416							"endCaptures": {
17417								"0": {
17418									"name": "punctuation.section.block.end.bracket.curly.class.cpp"
17419								}
17420							},
17421							"name": "meta.body.class.cpp",
17422							"patterns": [
17423								{
17424									"include": "#function_pointer"
17425								},
17426								{
17427									"include": "#static_assert"
17428								},
17429								{
17430									"include": "#constructor_inline"
17431								},
17432								{
17433									"include": "#destructor_inline"
17434								},
17435								{
17436									"include": "$self"
17437								}
17438							]
17439						},
17440						{
17441							"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
17442							"end": "[\\s]*(?=;)",
17443							"beginCaptures": {},
17444							"endCaptures": {},
17445							"name": "meta.tail.class.cpp",
17446							"patterns": [
17447								{
17448									"match": "(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))",
17449									"captures": {
17450										"1": {
17451											"patterns": [
17452												{
17453													"match": "\\*",
17454													"name": "storage.modifier.pointer.cpp"
17455												},
17456												{
17457													"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
17458													"captures": {
17459														"1": {
17460															"patterns": [
17461																{
17462																	"include": "#inline_comment"
17463																}
17464															]
17465														},
17466														"2": {
17467															"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17468														},
17469														"3": {
17470															"name": "comment.block.cpp"
17471														},
17472														"4": {
17473															"patterns": [
17474																{
17475																	"match": "\\*\\/",
17476																	"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17477																},
17478																{
17479																	"match": "\\*",
17480																	"name": "comment.block.cpp"
17481																}
17482															]
17483														}
17484													},
17485													"name": "invalid.illegal.reference-type.cpp"
17486												},
17487												{
17488													"match": "\\&",
17489													"name": "storage.modifier.reference.cpp"
17490												}
17491											]
17492										},
17493										"2": {
17494											"patterns": [
17495												{
17496													"include": "#inline_comment"
17497												}
17498											]
17499										},
17500										"3": {
17501											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17502										},
17503										"4": {
17504											"name": "comment.block.cpp"
17505										},
17506										"5": {
17507											"patterns": [
17508												{
17509													"match": "\\*\\/",
17510													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17511												},
17512												{
17513													"match": "\\*",
17514													"name": "comment.block.cpp"
17515												}
17516											]
17517										},
17518										"6": {
17519											"patterns": [
17520												{
17521													"include": "#inline_comment"
17522												}
17523											]
17524										},
17525										"7": {
17526											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17527										},
17528										"8": {
17529											"name": "comment.block.cpp"
17530										},
17531										"9": {
17532											"patterns": [
17533												{
17534													"match": "\\*\\/",
17535													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17536												},
17537												{
17538													"match": "\\*",
17539													"name": "comment.block.cpp"
17540												}
17541											]
17542										},
17543										"10": {
17544											"patterns": [
17545												{
17546													"include": "#inline_comment"
17547												}
17548											]
17549										},
17550										"11": {
17551											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17552										},
17553										"12": {
17554											"name": "comment.block.cpp"
17555										},
17556										"13": {
17557											"patterns": [
17558												{
17559													"match": "\\*\\/",
17560													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17561												},
17562												{
17563													"match": "\\*",
17564													"name": "comment.block.cpp"
17565												}
17566											]
17567										},
17568										"14": {
17569											"name": "entity.name.type.alias.cpp"
17570										}
17571									}
17572								},
17573								{
17574									"match": ","
17575								}
17576							]
17577						}
17578					]
17579				}
17580			]
17581		},
17582		"typedef_function_pointer": {
17583			"begin": "((?<!\\w)typedef(?!\\w))(?:(?:\\s)+)?(?=.*\\(\\*\\s*(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\s*\\))",
17584			"end": "(?<=;)",
17585			"beginCaptures": {
17586				"1": {
17587					"name": "keyword.other.typedef.cpp"
17588				}
17589			},
17590			"endCaptures": {},
17591			"patterns": [
17592				{
17593					"begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)(?:\\s)*+)?::)*+)?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<18>?)+>)?(?![\\w<:.]))(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()(\\*)(?:(?:\\s)+)?((?:(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*)?)(?:(?:\\s)+)?(?:(\\[)(\\w*)(\\])(?:(?:\\s)+)?)*(\\))(?:(?:\\s)+)?(\\()",
17594					"end": "(\\))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=[{=,);>]|\\n)(?!\\()",
17595					"beginCaptures": {
17596						"1": {
17597							"name": "meta.qualified_type.cpp",
17598							"patterns": [
17599								{
17600									"match": "::",
17601									"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
17602								},
17603								{
17604									"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
17605									"name": "storage.type.$0.cpp"
17606								},
17607								{
17608									"include": "#attributes_context"
17609								},
17610								{
17611									"include": "#storage_types"
17612								},
17613								{
17614									"include": "#number_literal"
17615								},
17616								{
17617									"include": "#string_context"
17618								},
17619								{
17620									"include": "#comma"
17621								},
17622								{
17623									"include": "#scope_resolution_inner_generated"
17624								},
17625								{
17626									"begin": "<",
17627									"end": ">",
17628									"beginCaptures": {
17629										"0": {
17630											"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
17631										}
17632									},
17633									"endCaptures": {
17634										"0": {
17635											"name": "punctuation.section.angle-brackets.end.template.call.cpp"
17636										}
17637									},
17638									"name": "meta.template.call.cpp",
17639									"patterns": [
17640										{
17641											"include": "#template_call_context"
17642										}
17643									]
17644								},
17645								{
17646									"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
17647									"name": "entity.name.type.cpp"
17648								}
17649							]
17650						},
17651						"2": {
17652							"patterns": [
17653								{
17654									"include": "#attributes_context"
17655								},
17656								{
17657									"include": "#number_literal"
17658								}
17659							]
17660						},
17661						"3": {
17662							"patterns": [
17663								{
17664									"include": "#inline_comment"
17665								}
17666							]
17667						},
17668						"4": {
17669							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17670						},
17671						"5": {
17672							"name": "comment.block.cpp"
17673						},
17674						"6": {
17675							"patterns": [
17676								{
17677									"match": "\\*\\/",
17678									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17679								},
17680								{
17681									"match": "\\*",
17682									"name": "comment.block.cpp"
17683								}
17684							]
17685						},
17686						"7": {
17687							"patterns": [
17688								{
17689									"include": "#inline_comment"
17690								}
17691							]
17692						},
17693						"8": {
17694							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17695						},
17696						"9": {
17697							"name": "comment.block.cpp"
17698						},
17699						"10": {
17700							"patterns": [
17701								{
17702									"match": "\\*\\/",
17703									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17704								},
17705								{
17706									"match": "\\*",
17707									"name": "comment.block.cpp"
17708								}
17709							]
17710						},
17711						"11": {
17712							"patterns": [
17713								{
17714									"match": "::",
17715									"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
17716								},
17717								{
17718									"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
17719									"name": "entity.name.scope-resolution.type.cpp"
17720								},
17721								{
17722									"include": "#template_call_range"
17723								}
17724							]
17725						},
17726						"12": {
17727							"patterns": [
17728								{
17729									"include": "#template_call_range"
17730								}
17731							]
17732						},
17733						"13": {},
17734						"14": {
17735							"patterns": [
17736								{
17737									"include": "#inline_comment"
17738								}
17739							]
17740						},
17741						"15": {
17742							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17743						},
17744						"16": {
17745							"name": "comment.block.cpp"
17746						},
17747						"17": {
17748							"patterns": [
17749								{
17750									"match": "\\*\\/",
17751									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17752								},
17753								{
17754									"match": "\\*",
17755									"name": "comment.block.cpp"
17756								}
17757							]
17758						},
17759						"18": {},
17760						"19": {
17761							"patterns": [
17762								{
17763									"match": "\\*",
17764									"name": "storage.modifier.pointer.cpp"
17765								},
17766								{
17767									"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
17768									"captures": {
17769										"1": {
17770											"patterns": [
17771												{
17772													"include": "#inline_comment"
17773												}
17774											]
17775										},
17776										"2": {
17777											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17778										},
17779										"3": {
17780											"name": "comment.block.cpp"
17781										},
17782										"4": {
17783											"patterns": [
17784												{
17785													"match": "\\*\\/",
17786													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17787												},
17788												{
17789													"match": "\\*",
17790													"name": "comment.block.cpp"
17791												}
17792											]
17793										}
17794									},
17795									"name": "invalid.illegal.reference-type.cpp"
17796								},
17797								{
17798									"match": "\\&",
17799									"name": "storage.modifier.reference.cpp"
17800								}
17801							]
17802						},
17803						"20": {
17804							"patterns": [
17805								{
17806									"include": "#inline_comment"
17807								}
17808							]
17809						},
17810						"21": {
17811							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17812						},
17813						"22": {
17814							"name": "comment.block.cpp"
17815						},
17816						"23": {
17817							"patterns": [
17818								{
17819									"match": "\\*\\/",
17820									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17821								},
17822								{
17823									"match": "\\*",
17824									"name": "comment.block.cpp"
17825								}
17826							]
17827						},
17828						"24": {
17829							"patterns": [
17830								{
17831									"include": "#inline_comment"
17832								}
17833							]
17834						},
17835						"25": {
17836							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17837						},
17838						"26": {
17839							"name": "comment.block.cpp"
17840						},
17841						"27": {
17842							"patterns": [
17843								{
17844									"match": "\\*\\/",
17845									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17846								},
17847								{
17848									"match": "\\*",
17849									"name": "comment.block.cpp"
17850								}
17851							]
17852						},
17853						"28": {
17854							"patterns": [
17855								{
17856									"include": "#inline_comment"
17857								}
17858							]
17859						},
17860						"29": {
17861							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17862						},
17863						"30": {
17864							"name": "comment.block.cpp"
17865						},
17866						"31": {
17867							"patterns": [
17868								{
17869									"match": "\\*\\/",
17870									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17871								},
17872								{
17873									"match": "\\*",
17874									"name": "comment.block.cpp"
17875								}
17876							]
17877						},
17878						"32": {
17879							"name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
17880						},
17881						"33": {
17882							"name": "punctuation.definition.function.pointer.dereference.cpp"
17883						},
17884						"34": {
17885							"name": "entity.name.type.alias.cpp entity.name.type.pointer.function.cpp"
17886						},
17887						"35": {
17888							"name": "punctuation.definition.begin.bracket.square.cpp"
17889						},
17890						"36": {
17891							"patterns": [
17892								{
17893									"include": "#evaluation_context"
17894								}
17895							]
17896						},
17897						"37": {
17898							"name": "punctuation.definition.end.bracket.square.cpp"
17899						},
17900						"38": {
17901							"name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
17902						},
17903						"39": {
17904							"name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
17905						}
17906					},
17907					"endCaptures": {
17908						"1": {
17909							"name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
17910						},
17911						"2": {
17912							"patterns": [
17913								{
17914									"include": "#inline_comment"
17915								}
17916							]
17917						},
17918						"3": {
17919							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17920						},
17921						"4": {
17922							"name": "comment.block.cpp"
17923						},
17924						"5": {
17925							"patterns": [
17926								{
17927									"match": "\\*\\/",
17928									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17929								},
17930								{
17931									"match": "\\*",
17932									"name": "comment.block.cpp"
17933								}
17934							]
17935						}
17936					},
17937					"patterns": [
17938						{
17939							"include": "#function_parameter_context"
17940						}
17941					]
17942				}
17943			]
17944		},
17945		"typedef_struct": {
17946			"begin": "((?<!\\w)typedef(?!\\w))(?:(?:\\s)+)?(?=(?<!\\w)struct(?!\\w))",
17947			"end": "(?<=;)",
17948			"beginCaptures": {
17949				"1": {
17950					"name": "keyword.other.typedef.cpp"
17951				}
17952			},
17953			"endCaptures": {},
17954			"patterns": [
17955				{
17956					"begin": "((?<!\\w)struct(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
17957					"end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
17958					"beginCaptures": {
17959						"0": {
17960							"name": "meta.head.struct.cpp"
17961						},
17962						"1": {
17963							"name": "storage.type.$1.cpp"
17964						},
17965						"2": {
17966							"patterns": [
17967								{
17968									"include": "#inline_comment"
17969								}
17970							]
17971						},
17972						"3": {
17973							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
17974						},
17975						"4": {
17976							"name": "comment.block.cpp"
17977						},
17978						"5": {
17979							"patterns": [
17980								{
17981									"match": "\\*\\/",
17982									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
17983								},
17984								{
17985									"match": "\\*",
17986									"name": "comment.block.cpp"
17987								}
17988							]
17989						},
17990						"6": {
17991							"patterns": [
17992								{
17993									"include": "#attributes_context"
17994								},
17995								{
17996									"include": "#number_literal"
17997								}
17998							]
17999						},
18000						"7": {
18001							"patterns": [
18002								{
18003									"include": "#inline_comment"
18004								}
18005							]
18006						},
18007						"8": {
18008							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18009						},
18010						"9": {
18011							"name": "comment.block.cpp"
18012						},
18013						"10": {
18014							"patterns": [
18015								{
18016									"match": "\\*\\/",
18017									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18018								},
18019								{
18020									"match": "\\*",
18021									"name": "comment.block.cpp"
18022								}
18023							]
18024						},
18025						"11": {
18026							"patterns": [
18027								{
18028									"match": "((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
18029									"captures": {
18030										"1": {
18031											"name": "storage.type.modifier.final.cpp"
18032										},
18033										"2": {
18034											"patterns": [
18035												{
18036													"include": "#inline_comment"
18037												}
18038											]
18039										},
18040										"3": {
18041											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18042										},
18043										"4": {
18044											"name": "comment.block.cpp"
18045										},
18046										"5": {
18047											"patterns": [
18048												{
18049													"match": "\\*\\/",
18050													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18051												},
18052												{
18053													"match": "\\*",
18054													"name": "comment.block.cpp"
18055												}
18056											]
18057										}
18058									}
18059								},
18060								{
18061									"match": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
18062									"captures": {
18063										"1": {
18064											"name": "entity.name.type.struct.cpp"
18065										},
18066										"2": {
18067											"patterns": [
18068												{
18069													"include": "#inline_comment"
18070												}
18071											]
18072										},
18073										"3": {
18074											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18075										},
18076										"4": {
18077											"name": "comment.block.cpp"
18078										},
18079										"5": {
18080											"patterns": [
18081												{
18082													"match": "\\*\\/",
18083													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18084												},
18085												{
18086													"match": "\\*",
18087													"name": "comment.block.cpp"
18088												}
18089											]
18090										},
18091										"6": {
18092											"name": "storage.type.modifier.final.cpp"
18093										},
18094										"7": {
18095											"patterns": [
18096												{
18097													"include": "#inline_comment"
18098												}
18099											]
18100										},
18101										"8": {
18102											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18103										},
18104										"9": {
18105											"name": "comment.block.cpp"
18106										},
18107										"10": {
18108											"patterns": [
18109												{
18110													"match": "\\*\\/",
18111													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18112												},
18113												{
18114													"match": "\\*",
18115													"name": "comment.block.cpp"
18116												}
18117											]
18118										}
18119									}
18120								},
18121								{
18122									"match": "DLLEXPORT",
18123									"name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
18124								},
18125								{
18126									"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
18127									"name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
18128								}
18129							]
18130						},
18131						"12": {
18132							"patterns": [
18133								{
18134									"include": "#inline_comment"
18135								}
18136							]
18137						},
18138						"13": {
18139							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18140						},
18141						"14": {
18142							"name": "comment.block.cpp"
18143						},
18144						"15": {
18145							"patterns": [
18146								{
18147									"match": "\\*\\/",
18148									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18149								},
18150								{
18151									"match": "\\*",
18152									"name": "comment.block.cpp"
18153								}
18154							]
18155						},
18156						"16": {
18157							"patterns": [
18158								{
18159									"include": "#inline_comment"
18160								}
18161							]
18162						},
18163						"17": {
18164							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18165						},
18166						"18": {
18167							"name": "comment.block.cpp"
18168						},
18169						"19": {
18170							"patterns": [
18171								{
18172									"match": "\\*\\/",
18173									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18174								},
18175								{
18176									"match": "\\*",
18177									"name": "comment.block.cpp"
18178								}
18179							]
18180						},
18181						"20": {
18182							"name": "punctuation.separator.colon.inheritance.cpp"
18183						}
18184					},
18185					"endCaptures": {
18186						"1": {
18187							"name": "punctuation.terminator.statement.cpp"
18188						},
18189						"2": {
18190							"name": "punctuation.terminator.statement.cpp"
18191						}
18192					},
18193					"name": "meta.block.struct.cpp",
18194					"patterns": [
18195						{
18196							"begin": "\\G ?",
18197							"end": "(?:\\{|<%|\\?\\?<|(?=;))",
18198							"beginCaptures": {},
18199							"endCaptures": {
18200								"0": {
18201									"name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
18202								}
18203							},
18204							"name": "meta.head.struct.cpp",
18205							"patterns": [
18206								{
18207									"include": "#ever_present_context"
18208								},
18209								{
18210									"include": "#inheritance_context"
18211								},
18212								{
18213									"include": "#template_call_range"
18214								}
18215							]
18216						},
18217						{
18218							"begin": "(?<=\\{|<%|\\?\\?<)",
18219							"end": "\\}|%>|\\?\\?>",
18220							"beginCaptures": {},
18221							"endCaptures": {
18222								"0": {
18223									"name": "punctuation.section.block.end.bracket.curly.struct.cpp"
18224								}
18225							},
18226							"name": "meta.body.struct.cpp",
18227							"patterns": [
18228								{
18229									"include": "#function_pointer"
18230								},
18231								{
18232									"include": "#static_assert"
18233								},
18234								{
18235									"include": "#constructor_inline"
18236								},
18237								{
18238									"include": "#destructor_inline"
18239								},
18240								{
18241									"include": "$self"
18242								}
18243							]
18244						},
18245						{
18246							"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
18247							"end": "[\\s]*(?=;)",
18248							"beginCaptures": {},
18249							"endCaptures": {},
18250							"name": "meta.tail.struct.cpp",
18251							"patterns": [
18252								{
18253									"match": "(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))",
18254									"captures": {
18255										"1": {
18256											"patterns": [
18257												{
18258													"match": "\\*",
18259													"name": "storage.modifier.pointer.cpp"
18260												},
18261												{
18262													"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
18263													"captures": {
18264														"1": {
18265															"patterns": [
18266																{
18267																	"include": "#inline_comment"
18268																}
18269															]
18270														},
18271														"2": {
18272															"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18273														},
18274														"3": {
18275															"name": "comment.block.cpp"
18276														},
18277														"4": {
18278															"patterns": [
18279																{
18280																	"match": "\\*\\/",
18281																	"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18282																},
18283																{
18284																	"match": "\\*",
18285																	"name": "comment.block.cpp"
18286																}
18287															]
18288														}
18289													},
18290													"name": "invalid.illegal.reference-type.cpp"
18291												},
18292												{
18293													"match": "\\&",
18294													"name": "storage.modifier.reference.cpp"
18295												}
18296											]
18297										},
18298										"2": {
18299											"patterns": [
18300												{
18301													"include": "#inline_comment"
18302												}
18303											]
18304										},
18305										"3": {
18306											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18307										},
18308										"4": {
18309											"name": "comment.block.cpp"
18310										},
18311										"5": {
18312											"patterns": [
18313												{
18314													"match": "\\*\\/",
18315													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18316												},
18317												{
18318													"match": "\\*",
18319													"name": "comment.block.cpp"
18320												}
18321											]
18322										},
18323										"6": {
18324											"patterns": [
18325												{
18326													"include": "#inline_comment"
18327												}
18328											]
18329										},
18330										"7": {
18331											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18332										},
18333										"8": {
18334											"name": "comment.block.cpp"
18335										},
18336										"9": {
18337											"patterns": [
18338												{
18339													"match": "\\*\\/",
18340													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18341												},
18342												{
18343													"match": "\\*",
18344													"name": "comment.block.cpp"
18345												}
18346											]
18347										},
18348										"10": {
18349											"patterns": [
18350												{
18351													"include": "#inline_comment"
18352												}
18353											]
18354										},
18355										"11": {
18356											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18357										},
18358										"12": {
18359											"name": "comment.block.cpp"
18360										},
18361										"13": {
18362											"patterns": [
18363												{
18364													"match": "\\*\\/",
18365													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18366												},
18367												{
18368													"match": "\\*",
18369													"name": "comment.block.cpp"
18370												}
18371											]
18372										},
18373										"14": {
18374											"name": "entity.name.type.alias.cpp"
18375										}
18376									}
18377								},
18378								{
18379									"match": ","
18380								}
18381							]
18382						}
18383					]
18384				}
18385			]
18386		},
18387		"typedef_union": {
18388			"begin": "((?<!\\w)typedef(?!\\w))(?:(?:\\s)+)?(?=(?<!\\w)union(?!\\w))",
18389			"end": "(?<=;)",
18390			"beginCaptures": {
18391				"1": {
18392					"name": "keyword.other.typedef.cpp"
18393				}
18394			},
18395			"endCaptures": {},
18396			"patterns": [
18397				{
18398					"begin": "((?<!\\w)union(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
18399					"end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
18400					"beginCaptures": {
18401						"0": {
18402							"name": "meta.head.union.cpp"
18403						},
18404						"1": {
18405							"name": "storage.type.$1.cpp"
18406						},
18407						"2": {
18408							"patterns": [
18409								{
18410									"include": "#inline_comment"
18411								}
18412							]
18413						},
18414						"3": {
18415							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18416						},
18417						"4": {
18418							"name": "comment.block.cpp"
18419						},
18420						"5": {
18421							"patterns": [
18422								{
18423									"match": "\\*\\/",
18424									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18425								},
18426								{
18427									"match": "\\*",
18428									"name": "comment.block.cpp"
18429								}
18430							]
18431						},
18432						"6": {
18433							"patterns": [
18434								{
18435									"include": "#attributes_context"
18436								},
18437								{
18438									"include": "#number_literal"
18439								}
18440							]
18441						},
18442						"7": {
18443							"patterns": [
18444								{
18445									"include": "#inline_comment"
18446								}
18447							]
18448						},
18449						"8": {
18450							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18451						},
18452						"9": {
18453							"name": "comment.block.cpp"
18454						},
18455						"10": {
18456							"patterns": [
18457								{
18458									"match": "\\*\\/",
18459									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18460								},
18461								{
18462									"match": "\\*",
18463									"name": "comment.block.cpp"
18464								}
18465							]
18466						},
18467						"11": {
18468							"patterns": [
18469								{
18470									"match": "((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
18471									"captures": {
18472										"1": {
18473											"name": "storage.type.modifier.final.cpp"
18474										},
18475										"2": {
18476											"patterns": [
18477												{
18478													"include": "#inline_comment"
18479												}
18480											]
18481										},
18482										"3": {
18483											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18484										},
18485										"4": {
18486											"name": "comment.block.cpp"
18487										},
18488										"5": {
18489											"patterns": [
18490												{
18491													"match": "\\*\\/",
18492													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18493												},
18494												{
18495													"match": "\\*",
18496													"name": "comment.block.cpp"
18497												}
18498											]
18499										}
18500									}
18501								},
18502								{
18503									"match": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
18504									"captures": {
18505										"1": {
18506											"name": "entity.name.type.union.cpp"
18507										},
18508										"2": {
18509											"patterns": [
18510												{
18511													"include": "#inline_comment"
18512												}
18513											]
18514										},
18515										"3": {
18516											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18517										},
18518										"4": {
18519											"name": "comment.block.cpp"
18520										},
18521										"5": {
18522											"patterns": [
18523												{
18524													"match": "\\*\\/",
18525													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18526												},
18527												{
18528													"match": "\\*",
18529													"name": "comment.block.cpp"
18530												}
18531											]
18532										},
18533										"6": {
18534											"name": "storage.type.modifier.final.cpp"
18535										},
18536										"7": {
18537											"patterns": [
18538												{
18539													"include": "#inline_comment"
18540												}
18541											]
18542										},
18543										"8": {
18544											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18545										},
18546										"9": {
18547											"name": "comment.block.cpp"
18548										},
18549										"10": {
18550											"patterns": [
18551												{
18552													"match": "\\*\\/",
18553													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18554												},
18555												{
18556													"match": "\\*",
18557													"name": "comment.block.cpp"
18558												}
18559											]
18560										}
18561									}
18562								},
18563								{
18564									"match": "DLLEXPORT",
18565									"name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
18566								},
18567								{
18568									"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
18569									"name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
18570								}
18571							]
18572						},
18573						"12": {
18574							"patterns": [
18575								{
18576									"include": "#inline_comment"
18577								}
18578							]
18579						},
18580						"13": {
18581							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18582						},
18583						"14": {
18584							"name": "comment.block.cpp"
18585						},
18586						"15": {
18587							"patterns": [
18588								{
18589									"match": "\\*\\/",
18590									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18591								},
18592								{
18593									"match": "\\*",
18594									"name": "comment.block.cpp"
18595								}
18596							]
18597						},
18598						"16": {
18599							"patterns": [
18600								{
18601									"include": "#inline_comment"
18602								}
18603							]
18604						},
18605						"17": {
18606							"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18607						},
18608						"18": {
18609							"name": "comment.block.cpp"
18610						},
18611						"19": {
18612							"patterns": [
18613								{
18614									"match": "\\*\\/",
18615									"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18616								},
18617								{
18618									"match": "\\*",
18619									"name": "comment.block.cpp"
18620								}
18621							]
18622						},
18623						"20": {
18624							"name": "punctuation.separator.colon.inheritance.cpp"
18625						}
18626					},
18627					"endCaptures": {
18628						"1": {
18629							"name": "punctuation.terminator.statement.cpp"
18630						},
18631						"2": {
18632							"name": "punctuation.terminator.statement.cpp"
18633						}
18634					},
18635					"name": "meta.block.union.cpp",
18636					"patterns": [
18637						{
18638							"begin": "\\G ?",
18639							"end": "(?:\\{|<%|\\?\\?<|(?=;))",
18640							"beginCaptures": {},
18641							"endCaptures": {
18642								"0": {
18643									"name": "punctuation.section.block.begin.bracket.curly.union.cpp"
18644								}
18645							},
18646							"name": "meta.head.union.cpp",
18647							"patterns": [
18648								{
18649									"include": "#ever_present_context"
18650								},
18651								{
18652									"include": "#inheritance_context"
18653								},
18654								{
18655									"include": "#template_call_range"
18656								}
18657							]
18658						},
18659						{
18660							"begin": "(?<=\\{|<%|\\?\\?<)",
18661							"end": "\\}|%>|\\?\\?>",
18662							"beginCaptures": {},
18663							"endCaptures": {
18664								"0": {
18665									"name": "punctuation.section.block.end.bracket.curly.union.cpp"
18666								}
18667							},
18668							"name": "meta.body.union.cpp",
18669							"patterns": [
18670								{
18671									"include": "#function_pointer"
18672								},
18673								{
18674									"include": "#static_assert"
18675								},
18676								{
18677									"include": "#constructor_inline"
18678								},
18679								{
18680									"include": "#destructor_inline"
18681								},
18682								{
18683									"include": "$self"
18684								}
18685							]
18686						},
18687						{
18688							"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
18689							"end": "[\\s]*(?=;)",
18690							"beginCaptures": {},
18691							"endCaptures": {},
18692							"name": "meta.tail.union.cpp",
18693							"patterns": [
18694								{
18695									"match": "(((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))",
18696									"captures": {
18697										"1": {
18698											"patterns": [
18699												{
18700													"match": "\\*",
18701													"name": "storage.modifier.pointer.cpp"
18702												},
18703												{
18704													"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
18705													"captures": {
18706														"1": {
18707															"patterns": [
18708																{
18709																	"include": "#inline_comment"
18710																}
18711															]
18712														},
18713														"2": {
18714															"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18715														},
18716														"3": {
18717															"name": "comment.block.cpp"
18718														},
18719														"4": {
18720															"patterns": [
18721																{
18722																	"match": "\\*\\/",
18723																	"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18724																},
18725																{
18726																	"match": "\\*",
18727																	"name": "comment.block.cpp"
18728																}
18729															]
18730														}
18731													},
18732													"name": "invalid.illegal.reference-type.cpp"
18733												},
18734												{
18735													"match": "\\&",
18736													"name": "storage.modifier.reference.cpp"
18737												}
18738											]
18739										},
18740										"2": {
18741											"patterns": [
18742												{
18743													"include": "#inline_comment"
18744												}
18745											]
18746										},
18747										"3": {
18748											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18749										},
18750										"4": {
18751											"name": "comment.block.cpp"
18752										},
18753										"5": {
18754											"patterns": [
18755												{
18756													"match": "\\*\\/",
18757													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18758												},
18759												{
18760													"match": "\\*",
18761													"name": "comment.block.cpp"
18762												}
18763											]
18764										},
18765										"6": {
18766											"patterns": [
18767												{
18768													"include": "#inline_comment"
18769												}
18770											]
18771										},
18772										"7": {
18773											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18774										},
18775										"8": {
18776											"name": "comment.block.cpp"
18777										},
18778										"9": {
18779											"patterns": [
18780												{
18781													"match": "\\*\\/",
18782													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18783												},
18784												{
18785													"match": "\\*",
18786													"name": "comment.block.cpp"
18787												}
18788											]
18789										},
18790										"10": {
18791											"patterns": [
18792												{
18793													"include": "#inline_comment"
18794												}
18795											]
18796										},
18797										"11": {
18798											"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18799										},
18800										"12": {
18801											"name": "comment.block.cpp"
18802										},
18803										"13": {
18804											"patterns": [
18805												{
18806													"match": "\\*\\/",
18807													"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18808												},
18809												{
18810													"match": "\\*",
18811													"name": "comment.block.cpp"
18812												}
18813											]
18814										},
18815										"14": {
18816											"name": "entity.name.type.alias.cpp"
18817										}
18818									}
18819								},
18820								{
18821									"match": ","
18822								}
18823							]
18824						}
18825					]
18826				}
18827			]
18828		},
18829		"typeid_operator": {
18830			"begin": "((?<!\\w)typeid(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\()",
18831			"end": "\\)",
18832			"beginCaptures": {
18833				"1": {
18834					"name": "keyword.operator.functionlike.cpp keyword.operator.typeid.cpp"
18835				},
18836				"2": {
18837					"patterns": [
18838						{
18839							"include": "#inline_comment"
18840						}
18841					]
18842				},
18843				"3": {
18844					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18845				},
18846				"4": {
18847					"name": "comment.block.cpp"
18848				},
18849				"5": {
18850					"patterns": [
18851						{
18852							"match": "\\*\\/",
18853							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18854						},
18855						{
18856							"match": "\\*",
18857							"name": "comment.block.cpp"
18858						}
18859					]
18860				},
18861				"6": {
18862					"name": "punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp"
18863				}
18864			},
18865			"endCaptures": {
18866				"0": {
18867					"name": "punctuation.section.arguments.end.bracket.round.operator.typeid.cpp"
18868				}
18869			},
18870			"contentName": "meta.arguments.operator.typeid",
18871			"patterns": [
18872				{
18873					"include": "#evaluation_context"
18874				}
18875			]
18876		},
18877		"typename": {
18878			"match": "(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?<!\\w)typename(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<17>?)+>)(?:\\s)*+)?::)*+)?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:atomic_cancel)|(?:__has_include)|(?:dynamic_cast)|(?:synchronized)|(?:thread_local)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:consteval)|(?:co_return)|(?:co_return)|(?:constexpr)|(?:protected)|(?:constexpr)|(?:namespace)|(?:noexcept)|(?:typename)|(?:decltype)|(?:template)|(?:operator)|(?:noexcept)|(?:co_yield)|(?:co_await)|(?:continue)|(?:co_await)|(?:co_yield)|(?:volatile)|(?:register)|(?:restrict)|(?:explicit)|(?:override)|(?:volatile)|(?:reflexpr)|(?:noexcept)|(?:requires)|(?:alignas)|(?:typedef)|(?:nullptr)|(?:alignof)|(?:mutable)|(?:concept)|(?:virtual)|(?:defined)|(?:__asm__)|(?:include)|(?:_Pragma)|(?:mutable)|(?:default)|(?:warning)|(?:private)|(?:module)|(?:return)|(?:not_eq)|(?:xor_eq)|(?:and_eq)|(?:ifndef)|(?:pragma)|(?:export)|(?:import)|(?:sizeof)|(?:static)|(?:delete)|(?:public)|(?:define)|(?:extern)|(?:inline)|(?:typeid)|(?:switch)|(?:friend)|(?:bitand)|(?:false)|(?:compl)|(?:bitor)|(?:throw)|(?:or_eq)|(?:while)|(?:catch)|(?:break)|(?:const)|(?:final)|(?:const)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:using)|(?:audit)|(?:axiom)|(?:line)|(?:else)|(?:elif)|(?:true)|(?:NULL)|(?:case)|(?:goto)|(?:else)|(?:this)|(?:new)|(?:asm)|(?:not)|(?:and)|(?:xor)|(?:try)|(?:for)|(?:if)|(?:do)|(?:or)|(?:if))\\b)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*\\b((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<17>?)+>)?(?![\\w<:.]))",
18879			"captures": {
18880				"1": {
18881					"name": "storage.modifier.cpp"
18882				},
18883				"2": {
18884					"patterns": [
18885						{
18886							"include": "#inline_comment"
18887						}
18888					]
18889				},
18890				"3": {
18891					"patterns": [
18892						{
18893							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
18894							"captures": {
18895								"1": {
18896									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18897								},
18898								"2": {
18899									"name": "comment.block.cpp"
18900								},
18901								"3": {
18902									"patterns": [
18903										{
18904											"match": "\\*\\/",
18905											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18906										},
18907										{
18908											"match": "\\*",
18909											"name": "comment.block.cpp"
18910										}
18911									]
18912								}
18913							}
18914						}
18915					]
18916				},
18917				"4": {
18918					"patterns": [
18919						{
18920							"include": "#inline_comment"
18921						}
18922					]
18923				},
18924				"5": {
18925					"patterns": [
18926						{
18927							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
18928							"captures": {
18929								"1": {
18930									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
18931								},
18932								"2": {
18933									"name": "comment.block.cpp"
18934								},
18935								"3": {
18936									"patterns": [
18937										{
18938											"match": "\\*\\/",
18939											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
18940										},
18941										{
18942											"match": "\\*",
18943											"name": "comment.block.cpp"
18944										}
18945									]
18946								}
18947							}
18948						}
18949					]
18950				},
18951				"6": {
18952					"name": "meta.qualified_type.cpp",
18953					"patterns": [
18954						{
18955							"match": "::",
18956							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
18957						},
18958						{
18959							"match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
18960							"name": "storage.type.$0.cpp"
18961						},
18962						{
18963							"include": "#attributes_context"
18964						},
18965						{
18966							"include": "#storage_types"
18967						},
18968						{
18969							"include": "#number_literal"
18970						},
18971						{
18972							"include": "#string_context"
18973						},
18974						{
18975							"include": "#comma"
18976						},
18977						{
18978							"include": "#scope_resolution_inner_generated"
18979						},
18980						{
18981							"begin": "<",
18982							"end": ">",
18983							"beginCaptures": {
18984								"0": {
18985									"name": "punctuation.section.angle-brackets.begin.template.call.cpp"
18986								}
18987							},
18988							"endCaptures": {
18989								"0": {
18990									"name": "punctuation.section.angle-brackets.end.template.call.cpp"
18991								}
18992							},
18993							"name": "meta.template.call.cpp",
18994							"patterns": [
18995								{
18996									"include": "#template_call_context"
18997								}
18998							]
18999						},
19000						{
19001							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
19002							"name": "entity.name.type.cpp"
19003						}
19004					]
19005				},
19006				"7": {
19007					"patterns": [
19008						{
19009							"include": "#attributes_context"
19010						},
19011						{
19012							"include": "#number_literal"
19013						}
19014					]
19015				},
19016				"8": {
19017					"patterns": [
19018						{
19019							"include": "#inline_comment"
19020						}
19021					]
19022				},
19023				"9": {
19024					"patterns": [
19025						{
19026							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19027							"captures": {
19028								"1": {
19029									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19030								},
19031								"2": {
19032									"name": "comment.block.cpp"
19033								},
19034								"3": {
19035									"patterns": [
19036										{
19037											"match": "\\*\\/",
19038											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19039										},
19040										{
19041											"match": "\\*",
19042											"name": "comment.block.cpp"
19043										}
19044									]
19045								}
19046							}
19047						}
19048					]
19049				},
19050				"10": {
19051					"patterns": [
19052						{
19053							"include": "#inline_comment"
19054						}
19055					]
19056				},
19057				"11": {
19058					"patterns": [
19059						{
19060							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19061							"captures": {
19062								"1": {
19063									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19064								},
19065								"2": {
19066									"name": "comment.block.cpp"
19067								},
19068								"3": {
19069									"patterns": [
19070										{
19071											"match": "\\*\\/",
19072											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19073										},
19074										{
19075											"match": "\\*",
19076											"name": "comment.block.cpp"
19077										}
19078									]
19079								}
19080							}
19081						}
19082					]
19083				},
19084				"12": {
19085					"patterns": [
19086						{
19087							"match": "::",
19088							"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
19089						},
19090						{
19091							"match": "(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)",
19092							"name": "entity.name.scope-resolution.type.cpp"
19093						},
19094						{
19095							"include": "#template_call_range"
19096						}
19097					]
19098				},
19099				"13": {
19100					"patterns": [
19101						{
19102							"include": "#template_call_range"
19103						}
19104					]
19105				},
19106				"14": {},
19107				"15": {
19108					"patterns": [
19109						{
19110							"include": "#inline_comment"
19111						}
19112					]
19113				},
19114				"16": {
19115					"patterns": [
19116						{
19117							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19118							"captures": {
19119								"1": {
19120									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19121								},
19122								"2": {
19123									"name": "comment.block.cpp"
19124								},
19125								"3": {
19126									"patterns": [
19127										{
19128											"match": "\\*\\/",
19129											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19130										},
19131										{
19132											"match": "\\*",
19133											"name": "comment.block.cpp"
19134										}
19135									]
19136								}
19137							}
19138						}
19139					]
19140				},
19141				"17": {}
19142			}
19143		},
19144		"undef": {
19145			"match": "(^((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(#)(?:(?:\\s)+)?undef\\b)((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))",
19146			"captures": {
19147				"1": {
19148					"name": "keyword.control.directive.undef.cpp"
19149				},
19150				"2": {
19151					"patterns": [
19152						{
19153							"include": "#inline_comment"
19154						}
19155					]
19156				},
19157				"3": {
19158					"patterns": [
19159						{
19160							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19161							"captures": {
19162								"1": {
19163									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19164								},
19165								"2": {
19166									"name": "comment.block.cpp"
19167								},
19168								"3": {
19169									"patterns": [
19170										{
19171											"match": "\\*\\/",
19172											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19173										},
19174										{
19175											"match": "\\*",
19176											"name": "comment.block.cpp"
19177										}
19178									]
19179								}
19180							}
19181						}
19182					]
19183				},
19184				"4": {
19185					"name": "punctuation.definition.directive.cpp"
19186				},
19187				"5": {
19188					"patterns": [
19189						{
19190							"include": "#inline_comment"
19191						}
19192					]
19193				},
19194				"6": {
19195					"patterns": [
19196						{
19197							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19198							"captures": {
19199								"1": {
19200									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19201								},
19202								"2": {
19203									"name": "comment.block.cpp"
19204								},
19205								"3": {
19206									"patterns": [
19207										{
19208											"match": "\\*\\/",
19209											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19210										},
19211										{
19212											"match": "\\*",
19213											"name": "comment.block.cpp"
19214										}
19215									]
19216								}
19217							}
19218						}
19219					]
19220				},
19221				"7": {
19222					"name": "entity.name.function.preprocessor.cpp"
19223				}
19224			},
19225			"name": "meta.preprocessor.undef.cpp"
19226		},
19227		"union_block": {
19228			"begin": "((?<!\\w)union(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?((?:(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*+)?(?:((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(:(?!:)))?)",
19229			"end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:(?:\\s)+)?(;)|(;))|(?=[;>\\[\\]=]))",
19230			"beginCaptures": {
19231				"0": {
19232					"name": "meta.head.union.cpp"
19233				},
19234				"1": {
19235					"name": "storage.type.$1.cpp"
19236				},
19237				"2": {
19238					"patterns": [
19239						{
19240							"include": "#inline_comment"
19241						}
19242					]
19243				},
19244				"3": {
19245					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19246				},
19247				"4": {
19248					"name": "comment.block.cpp"
19249				},
19250				"5": {
19251					"patterns": [
19252						{
19253							"match": "\\*\\/",
19254							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19255						},
19256						{
19257							"match": "\\*",
19258							"name": "comment.block.cpp"
19259						}
19260					]
19261				},
19262				"6": {
19263					"patterns": [
19264						{
19265							"include": "#attributes_context"
19266						},
19267						{
19268							"include": "#number_literal"
19269						}
19270					]
19271				},
19272				"7": {
19273					"patterns": [
19274						{
19275							"include": "#inline_comment"
19276						}
19277					]
19278				},
19279				"8": {
19280					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19281				},
19282				"9": {
19283					"name": "comment.block.cpp"
19284				},
19285				"10": {
19286					"patterns": [
19287						{
19288							"match": "\\*\\/",
19289							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19290						},
19291						{
19292							"match": "\\*",
19293							"name": "comment.block.cpp"
19294						}
19295					]
19296				},
19297				"11": {
19298					"patterns": [
19299						{
19300							"match": "((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))",
19301							"captures": {
19302								"1": {
19303									"name": "storage.type.modifier.final.cpp"
19304								},
19305								"2": {
19306									"patterns": [
19307										{
19308											"include": "#inline_comment"
19309										}
19310									]
19311								},
19312								"3": {
19313									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19314								},
19315								"4": {
19316									"name": "comment.block.cpp"
19317								},
19318								"5": {
19319									"patterns": [
19320										{
19321											"match": "\\*\\/",
19322											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19323										},
19324										{
19325											"match": "\\*",
19326											"name": "comment.block.cpp"
19327										}
19328									]
19329								}
19330							}
19331						},
19332						{
19333							"match": "((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?:((?<!\\w)final(?!\\w))((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))?(?=:|{|$)",
19334							"captures": {
19335								"1": {
19336									"name": "entity.name.type.union.cpp"
19337								},
19338								"2": {
19339									"patterns": [
19340										{
19341											"include": "#inline_comment"
19342										}
19343									]
19344								},
19345								"3": {
19346									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19347								},
19348								"4": {
19349									"name": "comment.block.cpp"
19350								},
19351								"5": {
19352									"patterns": [
19353										{
19354											"match": "\\*\\/",
19355											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19356										},
19357										{
19358											"match": "\\*",
19359											"name": "comment.block.cpp"
19360										}
19361									]
19362								},
19363								"6": {
19364									"name": "storage.type.modifier.final.cpp"
19365								},
19366								"7": {
19367									"patterns": [
19368										{
19369											"include": "#inline_comment"
19370										}
19371									]
19372								},
19373								"8": {
19374									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19375								},
19376								"9": {
19377									"name": "comment.block.cpp"
19378								},
19379								"10": {
19380									"patterns": [
19381										{
19382											"match": "\\*\\/",
19383											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19384										},
19385										{
19386											"match": "\\*",
19387											"name": "comment.block.cpp"
19388										}
19389									]
19390								}
19391							}
19392						},
19393						{
19394							"match": "DLLEXPORT",
19395							"name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
19396						},
19397						{
19398							"match": "(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*",
19399							"name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
19400						}
19401					]
19402				},
19403				"12": {
19404					"patterns": [
19405						{
19406							"include": "#inline_comment"
19407						}
19408					]
19409				},
19410				"13": {
19411					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19412				},
19413				"14": {
19414					"name": "comment.block.cpp"
19415				},
19416				"15": {
19417					"patterns": [
19418						{
19419							"match": "\\*\\/",
19420							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19421						},
19422						{
19423							"match": "\\*",
19424							"name": "comment.block.cpp"
19425						}
19426					]
19427				},
19428				"16": {
19429					"patterns": [
19430						{
19431							"include": "#inline_comment"
19432						}
19433					]
19434				},
19435				"17": {
19436					"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19437				},
19438				"18": {
19439					"name": "comment.block.cpp"
19440				},
19441				"19": {
19442					"patterns": [
19443						{
19444							"match": "\\*\\/",
19445							"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19446						},
19447						{
19448							"match": "\\*",
19449							"name": "comment.block.cpp"
19450						}
19451					]
19452				},
19453				"20": {
19454					"name": "punctuation.separator.colon.inheritance.cpp"
19455				}
19456			},
19457			"endCaptures": {
19458				"1": {
19459					"name": "punctuation.terminator.statement.cpp"
19460				},
19461				"2": {
19462					"name": "punctuation.terminator.statement.cpp"
19463				}
19464			},
19465			"name": "meta.block.union.cpp",
19466			"patterns": [
19467				{
19468					"begin": "\\G ?",
19469					"end": "(?:\\{|<%|\\?\\?<|(?=;))",
19470					"beginCaptures": {},
19471					"endCaptures": {
19472						"0": {
19473							"name": "punctuation.section.block.begin.bracket.curly.union.cpp"
19474						}
19475					},
19476					"name": "meta.head.union.cpp",
19477					"patterns": [
19478						{
19479							"include": "#ever_present_context"
19480						},
19481						{
19482							"include": "#inheritance_context"
19483						},
19484						{
19485							"include": "#template_call_range"
19486						}
19487					]
19488				},
19489				{
19490					"begin": "(?<=\\{|<%|\\?\\?<)",
19491					"end": "\\}|%>|\\?\\?>",
19492					"beginCaptures": {},
19493					"endCaptures": {
19494						"0": {
19495							"name": "punctuation.section.block.end.bracket.curly.union.cpp"
19496						}
19497					},
19498					"name": "meta.body.union.cpp",
19499					"patterns": [
19500						{
19501							"include": "#function_pointer"
19502						},
19503						{
19504							"include": "#static_assert"
19505						},
19506						{
19507							"include": "#constructor_inline"
19508						},
19509						{
19510							"include": "#destructor_inline"
19511						},
19512						{
19513							"include": "$self"
19514						}
19515					]
19516				},
19517				{
19518					"begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
19519					"end": "[\\s]*(?=;)",
19520					"beginCaptures": {},
19521					"endCaptures": {},
19522					"name": "meta.tail.union.cpp",
19523					"patterns": [
19524						{
19525							"include": "$self"
19526						}
19527					]
19528				}
19529			]
19530		},
19531		"union_declare": {
19532			"match": "((?<!\\w)union(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))?(?:(?:&|(?:\\*))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z))))*(?:&|(?:\\*)))?((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))\\b(?!override\\W|override\\$|final\\W|final\\$)((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))((?:((?:(?>(?:\\s)+)|\\/\\*(?:[^\\*]|(?:\\*)++[^\\/])*+(?:\\*)++\\/)+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))(?=\\S)(?![:{a-zA-Z])",
19533			"captures": {
19534				"1": {
19535					"name": "storage.type.union.declare.cpp"
19536				},
19537				"2": {
19538					"patterns": [
19539						{
19540							"include": "#inline_comment"
19541						}
19542					]
19543				},
19544				"3": {
19545					"patterns": [
19546						{
19547							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19548							"captures": {
19549								"1": {
19550									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19551								},
19552								"2": {
19553									"name": "comment.block.cpp"
19554								},
19555								"3": {
19556									"patterns": [
19557										{
19558											"match": "\\*\\/",
19559											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19560										},
19561										{
19562											"match": "\\*",
19563											"name": "comment.block.cpp"
19564										}
19565									]
19566								}
19567							}
19568						}
19569					]
19570				},
19571				"4": {
19572					"name": "entity.name.type.union.cpp"
19573				},
19574				"5": {
19575					"patterns": [
19576						{
19577							"match": "\\*",
19578							"name": "storage.modifier.pointer.cpp"
19579						},
19580						{
19581							"match": "(?:\\&((?:(?:(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))+)|(?:\\b)|(?=\\W)|(?<=\\W)|(?:\\A)|(?:\\Z)))){2,}\\&",
19582							"captures": {
19583								"1": {
19584									"patterns": [
19585										{
19586											"include": "#inline_comment"
19587										}
19588									]
19589								},
19590								"2": {
19591									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19592								},
19593								"3": {
19594									"name": "comment.block.cpp"
19595								},
19596								"4": {
19597									"patterns": [
19598										{
19599											"match": "\\*\\/",
19600											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19601										},
19602										{
19603											"match": "\\*",
19604											"name": "comment.block.cpp"
19605										}
19606									]
19607								}
19608							},
19609							"name": "invalid.illegal.reference-type.cpp"
19610						},
19611						{
19612							"match": "\\&",
19613							"name": "storage.modifier.reference.cpp"
19614						}
19615					]
19616				},
19617				"6": {
19618					"patterns": [
19619						{
19620							"include": "#inline_comment"
19621						}
19622					]
19623				},
19624				"7": {
19625					"patterns": [
19626						{
19627							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19628							"captures": {
19629								"1": {
19630									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19631								},
19632								"2": {
19633									"name": "comment.block.cpp"
19634								},
19635								"3": {
19636									"patterns": [
19637										{
19638											"match": "\\*\\/",
19639											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19640										},
19641										{
19642											"match": "\\*",
19643											"name": "comment.block.cpp"
19644										}
19645									]
19646								}
19647							}
19648						}
19649					]
19650				},
19651				"8": {
19652					"patterns": [
19653						{
19654							"include": "#inline_comment"
19655						}
19656					]
19657				},
19658				"9": {
19659					"patterns": [
19660						{
19661							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19662							"captures": {
19663								"1": {
19664									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19665								},
19666								"2": {
19667									"name": "comment.block.cpp"
19668								},
19669								"3": {
19670									"patterns": [
19671										{
19672											"match": "\\*\\/",
19673											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19674										},
19675										{
19676											"match": "\\*",
19677											"name": "comment.block.cpp"
19678										}
19679									]
19680								}
19681							}
19682						}
19683					]
19684				},
19685				"10": {
19686					"patterns": [
19687						{
19688							"include": "#inline_comment"
19689						}
19690					]
19691				},
19692				"11": {
19693					"patterns": [
19694						{
19695							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19696							"captures": {
19697								"1": {
19698									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19699								},
19700								"2": {
19701									"name": "comment.block.cpp"
19702								},
19703								"3": {
19704									"patterns": [
19705										{
19706											"match": "\\*\\/",
19707											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19708										},
19709										{
19710											"match": "\\*",
19711											"name": "comment.block.cpp"
19712										}
19713									]
19714								}
19715							}
19716						}
19717					]
19718				},
19719				"12": {
19720					"name": "variable.other.object.declare.cpp"
19721				},
19722				"13": {
19723					"patterns": [
19724						{
19725							"include": "#inline_comment"
19726						}
19727					]
19728				},
19729				"14": {
19730					"patterns": [
19731						{
19732							"match": "(?:(?>(?:\\s)+)|(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/)))",
19733							"captures": {
19734								"1": {
19735									"name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
19736								},
19737								"2": {
19738									"name": "comment.block.cpp"
19739								},
19740								"3": {
19741									"patterns": [
19742										{
19743											"match": "\\*\\/",
19744											"name": "comment.block.cpp punctuation.definition.comment.end.cpp"
19745										},
19746										{
19747											"match": "\\*",
19748											"name": "comment.block.cpp"
19749										}
19750									]
19751								}
19752							}
19753						}
19754					]
19755				}
19756			}
19757		},
19758		"using_name": {
19759			"match": "(using)(?:\\s)+(?!namespace\\b)",
19760			"captures": {
19761				"1": {
19762					"name": "keyword.other.using.directive.cpp"
19763				}
19764			}
19765		},
19766		"using_namespace": {
19767			"begin": "(?<!\\w)(using)(?:\\s)+(namespace)(?:\\s)+((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|synchronized|dynamic_cast|thread_local|static_cast|const_cast|co_return|constexpr|constexpr|constexpr|co_return|protected|namespace|consteval|noexcept|decltype|template|operator|noexcept|co_yield|co_await|reflexpr|continue|co_await|co_yield|requires|volatile|register|restrict|explicit|volatile|noexcept|typename|default|_Pragma|mutable|include|concept|alignas|virtual|alignof|__asm__|defined|mutable|typedef|warning|private|and_eq|define|pragma|typeid|switch|bitand|return|ifndef|export|struct|sizeof|module|static|public|extern|inline|friend|delete|xor_eq|import|not_eq|class|compl|bitor|throw|or_eq|while|catch|break|union|const|const|endif|ifdef|undef|error|using|else|line|goto|else|elif|this|enum|case|new|asm|not|try|for|and|xor|or|if|do|if)\\b)(?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w)\\s*+(((?<!<)<(?!<)(?:(?:(?:[^'\"<>]*+|\"(?:[^\"]*|\\\\\")\")|'(?:[^']*|\\\\')')\\g<6>?)+>)(?:\\s)*+)?::)*\\s*+)?((?<!\\w)(?:[a-zA-Z_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))(?:[a-zA-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*(?!\\w))(?=;|\\n)",
19768			"end": ";",
19769			"beginCaptures": {
19770				"1": {
19771					"name": "keyword.other.using.directive.cpp"
19772				},
19773				"2": {
19774					"name": "keyword.other.namespace.directive.cpp storage.type.namespace.directive.cpp"
19775				},
19776				"3": {
19777					"patterns": [
19778						{
19779							"include": "#scope_resolution_namespace_using_inner_generated"
19780						}
19781					]
19782				},
19783				"4": {
19784					"name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
19785				},
19786				"5": {
19787					"patterns": [
19788						{
19789							"include": "#template_call_range"
19790						}
19791					]
19792				},
19793				"6": {},
19794				"7": {
19795					"name": "entity.name.namespace.cpp"
19796				}
19797			},
19798			"endCaptures": {
19799				"0": {
19800					"name": "punctuation.terminator.statement.cpp"
19801				}
19802			},
19803			"name": "meta.using-namespace.cpp"
19804		},
19805		"vararg_ellipses": {
19806			"match": "(?<!\\.)\\.\\.\\.(?!\\.)",
19807			"name": "punctuation.vararg-ellipses.cpp"
19808		},
19809		"wordlike_operators": {
19810			"patterns": [
19811				{
19812					"match": "(?<!\\w)(?:(?:noexcept)|(?:xor_eq)|(?:and_eq)|(?:delete)|(?:not_eq)|(?:bitand)|(?:bitor)|(?:compl)|(?:or_eq)|(?:not)|(?:xor)|(?:new)|(?:and)|(?:or))(?!\\w)",
19813					"name": "keyword.operator.wordlike.cpp keyword.operator.$0.cpp"
19814				}
19815			]
19816		}
19817	}
19818}